{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import numpy as np\n",
    "from torchvision import datasets, transforms\n",
    "import torch.multiprocessing as mp\n",
    "import argparse\n",
    "from torch import optim\n",
    "import os\n",
    "import visdom\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "class LeNet(nn.Module):\n",
    "    def __init__(self):\n",
    "        super().__init__()\n",
    "        self.conv1 = nn.Conv2d(1,20,kernel_size=(5,5),stride=1)\n",
    "        self.pool1 = nn.MaxPool2d(2)\n",
    "        self.conv2 = nn.Conv2d(20,50,kernel_size=(5,5),stride=1)\n",
    "        self.pool2 =nn.MaxPool2d(2)\n",
    "        self.fc1 = nn.Linear(800,500)\n",
    "        self.relu1 = nn.ReLU()\n",
    "        self.fc2 =nn.Linear(500,10)\n",
    "        self.relu2 = nn.ReLU()\n",
    "    def forward(self,x):\n",
    "        x = self.pool1(self.conv1(x))\n",
    "        x = self.pool2(self.conv2(x))\n",
    "        x = self.relu1(self.fc1(x.view(-1,800)))\n",
    "        x = self.relu2(self.fc2(x))\n",
    "        return F.log_softmax(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train(args, model, device, dataloader_kwargs):\n",
    "    global_step = 0\n",
    "    #手动设置随机种子\n",
    "    torch.manual_seed(args.get('seed'))\n",
    "    #加载训练数据\n",
    "    train_loader = torch.utils.data.DataLoader(datasets.MNIST('../chapter3/data', train=True, download=True,transform=transforms.Compose([\n",
    "                        transforms.ToTensor(),\n",
    "                        transforms.Normalize((0.,), (1.,))\n",
    "                    ])),batch_size=args.get('batch_size'), shuffle=True, num_workers=1,**dataloader_kwargs)\n",
    "    #使用随机梯度下降进行优化\n",
    "    optimizer = optim.SGD(model.parameters(), lr=args.get('lr'), momentum=args.get('momentum'))\n",
    "    #开始训练，训练epoches次\n",
    "    for epoch in range(1, args.get('epochs') + 1):\n",
    "        global_step = train_epoch(epoch, args, model, device, train_loader, optimizer,global_step)\n",
    "\n",
    "def test(args, model, device, dataloader_kwargs):\n",
    "    #设置随机种子\n",
    "    torch.manual_seed(args.get('seed'))\n",
    "    #加载测试数据\n",
    "    test_loader = torch.utils.data.DataLoader(datasets.MNIST('../chapter3/data', train=False, transform=transforms.Compose([\n",
    "            transforms.ToTensor(),\n",
    "            transforms.Normalize((0.,), (1.,))\n",
    "        ])),batch_size=args.get('batch_size'), shuffle=True, num_workers=1,**dataloader_kwargs)\n",
    "    #运行测试\n",
    "    test_epoch(model, device, test_loader)\n",
    "    \n",
    "    \n",
    "def train_epoch(epoch, args, model, device, data_loader, optimizer,global_step):\n",
    "    #模型转换为训练模式\n",
    "    model.train()\n",
    "    pid = os.getpid()\n",
    "    for batch_idx, (data, target) in enumerate(data_loader):\n",
    "        #优化器梯度置0\n",
    "        optimizer.zero_grad()\n",
    "        #输入特征预测值\n",
    "        output = model(data.to(device))\n",
    "        #预测值与标准值计算损失\n",
    "        loss = F.nll_loss(output, target.to(device))\n",
    "        #计算梯度\n",
    "        loss.backward()\n",
    "        #更新梯度\n",
    "        optimizer.step()\n",
    "        #每10步打印一下日志\n",
    "        if batch_idx % 10 == 0:\n",
    "            global_step += 1\n",
    "            viz.line(Y=np.array([loss.item()]), X=np.array([global_step]), update='append', win=args.get(\"loss_win\"))\n",
    "            print('{}\\tTrain Epoch: {} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}'.format(pid, epoch, batch_idx * len(data), len(data_loader.dataset),\n",
    "                100. * batch_idx / len(data_loader), loss.item()))\n",
    "    return global_step\n",
    "\n",
    "\n",
    "def test_epoch(model, device, data_loader):\n",
    "    #模型转换为测试模式\n",
    "    model.eval()\n",
    "    test_loss = 0\n",
    "    correct = 0\n",
    "    with torch.no_grad():\n",
    "        for data, target in data_loader:\n",
    "            output = model(data.to(device))\n",
    "            #将每个批次的损失加起来\n",
    "            test_loss += F.nll_loss(output, target.to(device), reduction='sum').item()\n",
    "            #得到概率最大的索引,\n",
    "            pred = output.max(1)[1]\n",
    "            #预测的索引和目标索引相同，认为预测正确\n",
    "            correct += pred.eq(target.to(device)).sum().item()\n",
    "\n",
    "    test_loss /= len(data_loader.dataset)\n",
    "    print('\\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(test_loss, correct, len(data_loader.dataset),\n",
    "        100. * correct / len(data_loader.dataset)))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:root:Setting up a new session...\n",
      "D:\\softwares\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:17: UserWarning: Implicit dimension choice for log_softmax has been deprecated. Change the call to include dim=X as an argument.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2192\tTrain Epoch: 1 [0/60000 (0%)]\tLoss: 2.307944\n",
      "2192\tTrain Epoch: 1 [5120/60000 (8%)]\tLoss: 2.292752\n",
      "2192\tTrain Epoch: 1 [10240/60000 (17%)]\tLoss: 2.284603\n",
      "2192\tTrain Epoch: 1 [15360/60000 (25%)]\tLoss: 2.272050\n",
      "2192\tTrain Epoch: 1 [20480/60000 (34%)]\tLoss: 2.257520\n",
      "2192\tTrain Epoch: 1 [25600/60000 (42%)]\tLoss: 2.238625\n",
      "2192\tTrain Epoch: 1 [30720/60000 (51%)]\tLoss: 2.220961\n",
      "2192\tTrain Epoch: 1 [35840/60000 (59%)]\tLoss: 2.203156\n",
      "2192\tTrain Epoch: 1 [40960/60000 (68%)]\tLoss: 2.163243\n",
      "2192\tTrain Epoch: 1 [46080/60000 (76%)]\tLoss: 2.136190\n",
      "2192\tTrain Epoch: 1 [51200/60000 (85%)]\tLoss: 2.099717\n",
      "2192\tTrain Epoch: 1 [56320/60000 (93%)]\tLoss: 2.012057\n",
      "2192\tTrain Epoch: 2 [0/60000 (0%)]\tLoss: 1.943501\n",
      "2192\tTrain Epoch: 2 [5120/60000 (8%)]\tLoss: 1.839903\n",
      "2192\tTrain Epoch: 2 [10240/60000 (17%)]\tLoss: 1.663127\n",
      "2192\tTrain Epoch: 2 [15360/60000 (25%)]\tLoss: 1.543957\n",
      "2192\tTrain Epoch: 2 [20480/60000 (34%)]\tLoss: 1.441138\n",
      "2192\tTrain Epoch: 2 [25600/60000 (42%)]\tLoss: 1.312943\n",
      "2192\tTrain Epoch: 2 [30720/60000 (51%)]\tLoss: 1.233903\n",
      "2192\tTrain Epoch: 2 [35840/60000 (59%)]\tLoss: 1.105877\n",
      "2192\tTrain Epoch: 2 [40960/60000 (68%)]\tLoss: 1.086951\n",
      "2192\tTrain Epoch: 2 [46080/60000 (76%)]\tLoss: 0.958174\n",
      "2192\tTrain Epoch: 2 [51200/60000 (85%)]\tLoss: 1.072912\n",
      "2192\tTrain Epoch: 2 [56320/60000 (93%)]\tLoss: 1.016486\n",
      "2192\tTrain Epoch: 3 [0/60000 (0%)]\tLoss: 0.977260\n",
      "2192\tTrain Epoch: 3 [5120/60000 (8%)]\tLoss: 0.789656\n",
      "2192\tTrain Epoch: 3 [10240/60000 (17%)]\tLoss: 0.742515\n",
      "2192\tTrain Epoch: 3 [15360/60000 (25%)]\tLoss: 0.783911\n",
      "2192\tTrain Epoch: 3 [20480/60000 (34%)]\tLoss: 0.714493\n",
      "2192\tTrain Epoch: 3 [25600/60000 (42%)]\tLoss: 0.685980\n",
      "2192\tTrain Epoch: 3 [30720/60000 (51%)]\tLoss: 0.749350\n",
      "2192\tTrain Epoch: 3 [35840/60000 (59%)]\tLoss: 0.626324\n",
      "2192\tTrain Epoch: 3 [40960/60000 (68%)]\tLoss: 0.660025\n",
      "2192\tTrain Epoch: 3 [46080/60000 (76%)]\tLoss: 0.550501\n",
      "2192\tTrain Epoch: 3 [51200/60000 (85%)]\tLoss: 0.625815\n",
      "2192\tTrain Epoch: 3 [56320/60000 (93%)]\tLoss: 0.506770\n",
      "2192\tTrain Epoch: 4 [0/60000 (0%)]\tLoss: 0.548300\n",
      "2192\tTrain Epoch: 4 [5120/60000 (8%)]\tLoss: 0.559859\n",
      "2192\tTrain Epoch: 4 [10240/60000 (17%)]\tLoss: 0.558767\n",
      "2192\tTrain Epoch: 4 [15360/60000 (25%)]\tLoss: 0.512189\n",
      "2192\tTrain Epoch: 4 [20480/60000 (34%)]\tLoss: 0.555434\n",
      "2192\tTrain Epoch: 4 [25600/60000 (42%)]\tLoss: 0.550643\n",
      "2192\tTrain Epoch: 4 [30720/60000 (51%)]\tLoss: 0.534182\n",
      "2192\tTrain Epoch: 4 [35840/60000 (59%)]\tLoss: 0.508820\n",
      "2192\tTrain Epoch: 4 [40960/60000 (68%)]\tLoss: 0.613855\n",
      "2192\tTrain Epoch: 4 [46080/60000 (76%)]\tLoss: 0.560659\n",
      "2192\tTrain Epoch: 4 [51200/60000 (85%)]\tLoss: 0.563819\n",
      "2192\tTrain Epoch: 4 [56320/60000 (93%)]\tLoss: 0.514467\n",
      "2192\tTrain Epoch: 5 [0/60000 (0%)]\tLoss: 0.522280\n",
      "2192\tTrain Epoch: 5 [5120/60000 (8%)]\tLoss: 0.504298\n",
      "2192\tTrain Epoch: 5 [10240/60000 (17%)]\tLoss: 0.430180\n",
      "2192\tTrain Epoch: 5 [15360/60000 (25%)]\tLoss: 0.491863\n",
      "2192\tTrain Epoch: 5 [20480/60000 (34%)]\tLoss: 0.560382\n",
      "2192\tTrain Epoch: 5 [25600/60000 (42%)]\tLoss: 0.585956\n",
      "2192\tTrain Epoch: 5 [30720/60000 (51%)]\tLoss: 0.475171\n",
      "2192\tTrain Epoch: 5 [35840/60000 (59%)]\tLoss: 0.405989\n",
      "2192\tTrain Epoch: 5 [40960/60000 (68%)]\tLoss: 0.395611\n",
      "2192\tTrain Epoch: 5 [46080/60000 (76%)]\tLoss: 0.457039\n",
      "2192\tTrain Epoch: 5 [51200/60000 (85%)]\tLoss: 0.490086\n",
      "2192\tTrain Epoch: 5 [56320/60000 (93%)]\tLoss: 0.425634\n",
      "2192\tTrain Epoch: 6 [0/60000 (0%)]\tLoss: 0.495471\n",
      "2192\tTrain Epoch: 6 [5120/60000 (8%)]\tLoss: 0.461390\n",
      "2192\tTrain Epoch: 6 [10240/60000 (17%)]\tLoss: 0.505708\n",
      "2192\tTrain Epoch: 6 [15360/60000 (25%)]\tLoss: 0.494338\n",
      "2192\tTrain Epoch: 6 [20480/60000 (34%)]\tLoss: 0.407513\n",
      "2192\tTrain Epoch: 6 [25600/60000 (42%)]\tLoss: 0.504106\n",
      "2192\tTrain Epoch: 6 [30720/60000 (51%)]\tLoss: 0.490011\n",
      "2192\tTrain Epoch: 6 [35840/60000 (59%)]\tLoss: 0.462702\n",
      "2192\tTrain Epoch: 6 [40960/60000 (68%)]\tLoss: 0.456065\n",
      "2192\tTrain Epoch: 6 [46080/60000 (76%)]\tLoss: 0.407179\n",
      "2192\tTrain Epoch: 6 [51200/60000 (85%)]\tLoss: 0.385184\n",
      "2192\tTrain Epoch: 6 [56320/60000 (93%)]\tLoss: 0.376128\n",
      "2192\tTrain Epoch: 7 [0/60000 (0%)]\tLoss: 0.499860\n",
      "2192\tTrain Epoch: 7 [5120/60000 (8%)]\tLoss: 0.513008\n",
      "2192\tTrain Epoch: 7 [10240/60000 (17%)]\tLoss: 0.420502\n",
      "2192\tTrain Epoch: 7 [15360/60000 (25%)]\tLoss: 0.481502\n",
      "2192\tTrain Epoch: 7 [20480/60000 (34%)]\tLoss: 0.400325\n",
      "2192\tTrain Epoch: 7 [25600/60000 (42%)]\tLoss: 0.471412\n",
      "2192\tTrain Epoch: 7 [30720/60000 (51%)]\tLoss: 0.366387\n",
      "2192\tTrain Epoch: 7 [35840/60000 (59%)]\tLoss: 0.389324\n",
      "2192\tTrain Epoch: 7 [40960/60000 (68%)]\tLoss: 0.391196\n",
      "2192\tTrain Epoch: 7 [46080/60000 (76%)]\tLoss: 0.406711\n",
      "2192\tTrain Epoch: 7 [51200/60000 (85%)]\tLoss: 0.377413\n",
      "2192\tTrain Epoch: 7 [56320/60000 (93%)]\tLoss: 0.386773\n",
      "2192\tTrain Epoch: 8 [0/60000 (0%)]\tLoss: 0.456435\n",
      "2192\tTrain Epoch: 8 [5120/60000 (8%)]\tLoss: 0.420575\n",
      "2192\tTrain Epoch: 8 [10240/60000 (17%)]\tLoss: 0.412399\n",
      "2192\tTrain Epoch: 8 [15360/60000 (25%)]\tLoss: 0.357747\n",
      "2192\tTrain Epoch: 8 [20480/60000 (34%)]\tLoss: 0.397169\n",
      "2192\tTrain Epoch: 8 [25600/60000 (42%)]\tLoss: 0.373276\n",
      "2192\tTrain Epoch: 8 [30720/60000 (51%)]\tLoss: 0.450921\n",
      "2192\tTrain Epoch: 8 [35840/60000 (59%)]\tLoss: 0.356045\n",
      "2192\tTrain Epoch: 8 [40960/60000 (68%)]\tLoss: 0.373518\n",
      "2192\tTrain Epoch: 8 [46080/60000 (76%)]\tLoss: 0.401027\n",
      "2192\tTrain Epoch: 8 [51200/60000 (85%)]\tLoss: 0.372855\n",
      "2192\tTrain Epoch: 8 [56320/60000 (93%)]\tLoss: 0.459264\n",
      "2192\tTrain Epoch: 9 [0/60000 (0%)]\tLoss: 0.375192\n",
      "2192\tTrain Epoch: 9 [5120/60000 (8%)]\tLoss: 0.380045\n",
      "2192\tTrain Epoch: 9 [10240/60000 (17%)]\tLoss: 0.381134\n",
      "2192\tTrain Epoch: 9 [15360/60000 (25%)]\tLoss: 0.374880\n",
      "2192\tTrain Epoch: 9 [20480/60000 (34%)]\tLoss: 0.446142\n",
      "2192\tTrain Epoch: 9 [25600/60000 (42%)]\tLoss: 0.395864\n",
      "2192\tTrain Epoch: 9 [30720/60000 (51%)]\tLoss: 0.379852\n",
      "2192\tTrain Epoch: 9 [35840/60000 (59%)]\tLoss: 0.368921\n",
      "2192\tTrain Epoch: 9 [40960/60000 (68%)]\tLoss: 0.388964\n",
      "2192\tTrain Epoch: 9 [46080/60000 (76%)]\tLoss: 0.373935\n",
      "2192\tTrain Epoch: 9 [51200/60000 (85%)]\tLoss: 0.372684\n",
      "2192\tTrain Epoch: 9 [56320/60000 (93%)]\tLoss: 0.453621\n",
      "2192\tTrain Epoch: 10 [0/60000 (0%)]\tLoss: 0.373847\n",
      "2192\tTrain Epoch: 10 [5120/60000 (8%)]\tLoss: 0.404893\n",
      "2192\tTrain Epoch: 10 [10240/60000 (17%)]\tLoss: 0.369187\n",
      "2192\tTrain Epoch: 10 [15360/60000 (25%)]\tLoss: 0.459219\n",
      "2192\tTrain Epoch: 10 [20480/60000 (34%)]\tLoss: 0.371224\n",
      "2192\tTrain Epoch: 10 [25600/60000 (42%)]\tLoss: 0.347545\n",
      "2192\tTrain Epoch: 10 [30720/60000 (51%)]\tLoss: 0.415184\n",
      "2192\tTrain Epoch: 10 [35840/60000 (59%)]\tLoss: 0.331568\n",
      "2192\tTrain Epoch: 10 [40960/60000 (68%)]\tLoss: 0.343908\n",
      "2192\tTrain Epoch: 10 [46080/60000 (76%)]\tLoss: 0.423795\n",
      "2192\tTrain Epoch: 10 [51200/60000 (85%)]\tLoss: 0.424667\n",
      "2192\tTrain Epoch: 10 [56320/60000 (93%)]\tLoss: 0.318267\n",
      "2192\tTrain Epoch: 11 [0/60000 (0%)]\tLoss: 0.403781\n",
      "2192\tTrain Epoch: 11 [5120/60000 (8%)]\tLoss: 0.352307\n",
      "2192\tTrain Epoch: 11 [10240/60000 (17%)]\tLoss: 0.373469\n",
      "2192\tTrain Epoch: 11 [15360/60000 (25%)]\tLoss: 0.324848\n",
      "2192\tTrain Epoch: 11 [20480/60000 (34%)]\tLoss: 0.368537\n",
      "2192\tTrain Epoch: 11 [25600/60000 (42%)]\tLoss: 0.373745\n",
      "2192\tTrain Epoch: 11 [30720/60000 (51%)]\tLoss: 0.357330\n",
      "2192\tTrain Epoch: 11 [35840/60000 (59%)]\tLoss: 0.333320\n",
      "2192\tTrain Epoch: 11 [40960/60000 (68%)]\tLoss: 0.391232\n",
      "2192\tTrain Epoch: 11 [46080/60000 (76%)]\tLoss: 0.368705\n",
      "2192\tTrain Epoch: 11 [51200/60000 (85%)]\tLoss: 0.331554\n",
      "2192\tTrain Epoch: 11 [56320/60000 (93%)]\tLoss: 0.327674\n",
      "2192\tTrain Epoch: 12 [0/60000 (0%)]\tLoss: 0.359892\n",
      "2192\tTrain Epoch: 12 [5120/60000 (8%)]\tLoss: 0.377565\n",
      "2192\tTrain Epoch: 12 [10240/60000 (17%)]\tLoss: 0.324994\n",
      "2192\tTrain Epoch: 12 [15360/60000 (25%)]\tLoss: 0.392479\n",
      "2192\tTrain Epoch: 12 [20480/60000 (34%)]\tLoss: 0.342807\n",
      "2192\tTrain Epoch: 12 [25600/60000 (42%)]\tLoss: 0.339240\n",
      "2192\tTrain Epoch: 12 [30720/60000 (51%)]\tLoss: 0.330977\n",
      "2192\tTrain Epoch: 12 [35840/60000 (59%)]\tLoss: 0.365779\n",
      "2192\tTrain Epoch: 12 [40960/60000 (68%)]\tLoss: 0.336057\n",
      "2192\tTrain Epoch: 12 [46080/60000 (76%)]\tLoss: 0.332132\n",
      "2192\tTrain Epoch: 12 [51200/60000 (85%)]\tLoss: 0.316534\n",
      "2192\tTrain Epoch: 12 [56320/60000 (93%)]\tLoss: 0.336326\n",
      "2192\tTrain Epoch: 13 [0/60000 (0%)]\tLoss: 0.340514\n",
      "2192\tTrain Epoch: 13 [5120/60000 (8%)]\tLoss: 0.293363\n",
      "2192\tTrain Epoch: 13 [10240/60000 (17%)]\tLoss: 0.371659\n",
      "2192\tTrain Epoch: 13 [15360/60000 (25%)]\tLoss: 0.387118\n",
      "2192\tTrain Epoch: 13 [20480/60000 (34%)]\tLoss: 0.322988\n",
      "2192\tTrain Epoch: 13 [25600/60000 (42%)]\tLoss: 0.358850\n",
      "2192\tTrain Epoch: 13 [30720/60000 (51%)]\tLoss: 0.402307\n",
      "2192\tTrain Epoch: 13 [35840/60000 (59%)]\tLoss: 0.319436\n",
      "2192\tTrain Epoch: 13 [40960/60000 (68%)]\tLoss: 0.307116\n",
      "2192\tTrain Epoch: 13 [46080/60000 (76%)]\tLoss: 0.310585\n",
      "2192\tTrain Epoch: 13 [51200/60000 (85%)]\tLoss: 0.365383\n",
      "2192\tTrain Epoch: 13 [56320/60000 (93%)]\tLoss: 0.344478\n",
      "2192\tTrain Epoch: 14 [0/60000 (0%)]\tLoss: 0.339457\n",
      "2192\tTrain Epoch: 14 [5120/60000 (8%)]\tLoss: 0.322981\n",
      "2192\tTrain Epoch: 14 [10240/60000 (17%)]\tLoss: 0.327827\n",
      "2192\tTrain Epoch: 14 [15360/60000 (25%)]\tLoss: 0.330262\n",
      "2192\tTrain Epoch: 14 [20480/60000 (34%)]\tLoss: 0.375319\n",
      "2192\tTrain Epoch: 14 [25600/60000 (42%)]\tLoss: 0.375757\n",
      "2192\tTrain Epoch: 14 [30720/60000 (51%)]\tLoss: 0.324017\n",
      "2192\tTrain Epoch: 14 [35840/60000 (59%)]\tLoss: 0.246577\n",
      "2192\tTrain Epoch: 14 [40960/60000 (68%)]\tLoss: 0.327503\n",
      "2192\tTrain Epoch: 14 [46080/60000 (76%)]\tLoss: 0.290686\n",
      "2192\tTrain Epoch: 14 [51200/60000 (85%)]\tLoss: 0.351719\n",
      "2192\tTrain Epoch: 14 [56320/60000 (93%)]\tLoss: 0.317917\n",
      "2192\tTrain Epoch: 15 [0/60000 (0%)]\tLoss: 0.364498\n",
      "2192\tTrain Epoch: 15 [5120/60000 (8%)]\tLoss: 0.303808\n",
      "2192\tTrain Epoch: 15 [10240/60000 (17%)]\tLoss: 0.340821\n",
      "2192\tTrain Epoch: 15 [15360/60000 (25%)]\tLoss: 0.400946\n",
      "2192\tTrain Epoch: 15 [20480/60000 (34%)]\tLoss: 0.321256\n",
      "2192\tTrain Epoch: 15 [25600/60000 (42%)]\tLoss: 0.327041\n",
      "2192\tTrain Epoch: 15 [30720/60000 (51%)]\tLoss: 0.285122\n",
      "2192\tTrain Epoch: 15 [35840/60000 (59%)]\tLoss: 0.341820\n",
      "2192\tTrain Epoch: 15 [40960/60000 (68%)]\tLoss: 0.242536\n",
      "2192\tTrain Epoch: 15 [46080/60000 (76%)]\tLoss: 0.340496\n",
      "2192\tTrain Epoch: 15 [51200/60000 (85%)]\tLoss: 0.325734\n",
      "2192\tTrain Epoch: 15 [56320/60000 (93%)]\tLoss: 0.316502\n",
      "2192\tTrain Epoch: 16 [0/60000 (0%)]\tLoss: 0.321054\n",
      "2192\tTrain Epoch: 16 [5120/60000 (8%)]\tLoss: 0.321448\n",
      "2192\tTrain Epoch: 16 [10240/60000 (17%)]\tLoss: 0.285431\n",
      "2192\tTrain Epoch: 16 [15360/60000 (25%)]\tLoss: 0.320458\n",
      "2192\tTrain Epoch: 16 [20480/60000 (34%)]\tLoss: 0.335541\n",
      "2192\tTrain Epoch: 16 [25600/60000 (42%)]\tLoss: 0.297514\n",
      "2192\tTrain Epoch: 16 [30720/60000 (51%)]\tLoss: 0.332568\n",
      "2192\tTrain Epoch: 16 [35840/60000 (59%)]\tLoss: 0.300748\n",
      "2192\tTrain Epoch: 16 [40960/60000 (68%)]\tLoss: 0.274069\n",
      "2192\tTrain Epoch: 16 [46080/60000 (76%)]\tLoss: 0.292934\n",
      "2192\tTrain Epoch: 16 [51200/60000 (85%)]\tLoss: 0.354235\n",
      "2192\tTrain Epoch: 16 [56320/60000 (93%)]\tLoss: 0.336888\n",
      "2192\tTrain Epoch: 17 [0/60000 (0%)]\tLoss: 0.367668\n",
      "2192\tTrain Epoch: 17 [5120/60000 (8%)]\tLoss: 0.264838\n",
      "2192\tTrain Epoch: 17 [10240/60000 (17%)]\tLoss: 0.328572\n",
      "2192\tTrain Epoch: 17 [15360/60000 (25%)]\tLoss: 0.315029\n",
      "2192\tTrain Epoch: 17 [20480/60000 (34%)]\tLoss: 0.322927\n",
      "2192\tTrain Epoch: 17 [25600/60000 (42%)]\tLoss: 0.238354\n",
      "2192\tTrain Epoch: 17 [30720/60000 (51%)]\tLoss: 0.246883\n",
      "2192\tTrain Epoch: 17 [35840/60000 (59%)]\tLoss: 0.277249\n",
      "2192\tTrain Epoch: 17 [40960/60000 (68%)]\tLoss: 0.312468\n",
      "2192\tTrain Epoch: 17 [46080/60000 (76%)]\tLoss: 0.316815\n",
      "2192\tTrain Epoch: 17 [51200/60000 (85%)]\tLoss: 0.333301\n",
      "2192\tTrain Epoch: 17 [56320/60000 (93%)]\tLoss: 0.315395\n",
      "2192\tTrain Epoch: 18 [0/60000 (0%)]\tLoss: 0.269837\n",
      "2192\tTrain Epoch: 18 [5120/60000 (8%)]\tLoss: 0.312535\n",
      "2192\tTrain Epoch: 18 [10240/60000 (17%)]\tLoss: 0.314250\n",
      "2192\tTrain Epoch: 18 [15360/60000 (25%)]\tLoss: 0.352881\n",
      "2192\tTrain Epoch: 18 [20480/60000 (34%)]\tLoss: 0.384513\n",
      "2192\tTrain Epoch: 18 [25600/60000 (42%)]\tLoss: 0.317054\n",
      "2192\tTrain Epoch: 18 [30720/60000 (51%)]\tLoss: 0.320928\n",
      "2192\tTrain Epoch: 18 [35840/60000 (59%)]\tLoss: 0.296736\n",
      "2192\tTrain Epoch: 18 [40960/60000 (68%)]\tLoss: 0.283575\n",
      "2192\tTrain Epoch: 18 [46080/60000 (76%)]\tLoss: 0.235759\n",
      "2192\tTrain Epoch: 18 [51200/60000 (85%)]\tLoss: 0.276043\n",
      "2192\tTrain Epoch: 18 [56320/60000 (93%)]\tLoss: 0.353303\n",
      "2192\tTrain Epoch: 19 [0/60000 (0%)]\tLoss: 0.318919\n",
      "2192\tTrain Epoch: 19 [5120/60000 (8%)]\tLoss: 0.330699\n",
      "2192\tTrain Epoch: 19 [10240/60000 (17%)]\tLoss: 0.263364\n",
      "2192\tTrain Epoch: 19 [15360/60000 (25%)]\tLoss: 0.314927\n",
      "2192\tTrain Epoch: 19 [20480/60000 (34%)]\tLoss: 0.377169\n",
      "2192\tTrain Epoch: 19 [25600/60000 (42%)]\tLoss: 0.285829\n",
      "2192\tTrain Epoch: 19 [30720/60000 (51%)]\tLoss: 0.332699\n",
      "2192\tTrain Epoch: 19 [35840/60000 (59%)]\tLoss: 0.286206\n",
      "2192\tTrain Epoch: 19 [40960/60000 (68%)]\tLoss: 0.277994\n",
      "2192\tTrain Epoch: 19 [46080/60000 (76%)]\tLoss: 0.260346\n",
      "2192\tTrain Epoch: 19 [51200/60000 (85%)]\tLoss: 0.255959\n",
      "2192\tTrain Epoch: 19 [56320/60000 (93%)]\tLoss: 0.340638\n",
      "2192\tTrain Epoch: 20 [0/60000 (0%)]\tLoss: 0.339462\n",
      "2192\tTrain Epoch: 20 [5120/60000 (8%)]\tLoss: 0.391720\n",
      "2192\tTrain Epoch: 20 [10240/60000 (17%)]\tLoss: 0.256726\n",
      "2192\tTrain Epoch: 20 [15360/60000 (25%)]\tLoss: 0.318135\n",
      "2192\tTrain Epoch: 20 [20480/60000 (34%)]\tLoss: 0.355942\n",
      "2192\tTrain Epoch: 20 [25600/60000 (42%)]\tLoss: 0.293674\n",
      "2192\tTrain Epoch: 20 [30720/60000 (51%)]\tLoss: 0.253790\n",
      "2192\tTrain Epoch: 20 [35840/60000 (59%)]\tLoss: 0.289320\n",
      "2192\tTrain Epoch: 20 [40960/60000 (68%)]\tLoss: 0.238589\n",
      "2192\tTrain Epoch: 20 [46080/60000 (76%)]\tLoss: 0.270110\n",
      "2192\tTrain Epoch: 20 [51200/60000 (85%)]\tLoss: 0.346334\n",
      "2192\tTrain Epoch: 20 [56320/60000 (93%)]\tLoss: 0.291023\n",
      "2192\tTrain Epoch: 21 [0/60000 (0%)]\tLoss: 0.273846\n",
      "2192\tTrain Epoch: 21 [5120/60000 (8%)]\tLoss: 0.329906\n",
      "2192\tTrain Epoch: 21 [10240/60000 (17%)]\tLoss: 0.324456\n",
      "2192\tTrain Epoch: 21 [15360/60000 (25%)]\tLoss: 0.361538\n",
      "2192\tTrain Epoch: 21 [20480/60000 (34%)]\tLoss: 0.253220\n",
      "2192\tTrain Epoch: 21 [25600/60000 (42%)]\tLoss: 0.301668\n",
      "2192\tTrain Epoch: 21 [30720/60000 (51%)]\tLoss: 0.302369\n",
      "2192\tTrain Epoch: 21 [35840/60000 (59%)]\tLoss: 0.316543\n",
      "2192\tTrain Epoch: 21 [40960/60000 (68%)]\tLoss: 0.293484\n",
      "2192\tTrain Epoch: 21 [46080/60000 (76%)]\tLoss: 0.271699\n",
      "2192\tTrain Epoch: 21 [51200/60000 (85%)]\tLoss: 0.252793\n",
      "2192\tTrain Epoch: 21 [56320/60000 (93%)]\tLoss: 0.323320\n",
      "2192\tTrain Epoch: 22 [0/60000 (0%)]\tLoss: 0.248959\n",
      "2192\tTrain Epoch: 22 [5120/60000 (8%)]\tLoss: 0.257118\n",
      "2192\tTrain Epoch: 22 [10240/60000 (17%)]\tLoss: 0.271309\n",
      "2192\tTrain Epoch: 22 [15360/60000 (25%)]\tLoss: 0.255019\n",
      "2192\tTrain Epoch: 22 [20480/60000 (34%)]\tLoss: 0.335829\n",
      "2192\tTrain Epoch: 22 [25600/60000 (42%)]\tLoss: 0.249951\n",
      "2192\tTrain Epoch: 22 [30720/60000 (51%)]\tLoss: 0.268904\n",
      "2192\tTrain Epoch: 22 [35840/60000 (59%)]\tLoss: 0.244804\n",
      "2192\tTrain Epoch: 22 [40960/60000 (68%)]\tLoss: 0.272450\n",
      "2192\tTrain Epoch: 22 [46080/60000 (76%)]\tLoss: 0.359687\n",
      "2192\tTrain Epoch: 22 [51200/60000 (85%)]\tLoss: 0.231013\n",
      "2192\tTrain Epoch: 22 [56320/60000 (93%)]\tLoss: 0.320310\n",
      "2192\tTrain Epoch: 23 [0/60000 (0%)]\tLoss: 0.288514\n",
      "2192\tTrain Epoch: 23 [5120/60000 (8%)]\tLoss: 0.264848\n",
      "2192\tTrain Epoch: 23 [10240/60000 (17%)]\tLoss: 0.305547\n",
      "2192\tTrain Epoch: 23 [15360/60000 (25%)]\tLoss: 0.259846\n",
      "2192\tTrain Epoch: 23 [20480/60000 (34%)]\tLoss: 0.307082\n",
      "2192\tTrain Epoch: 23 [25600/60000 (42%)]\tLoss: 0.241151\n",
      "2192\tTrain Epoch: 23 [30720/60000 (51%)]\tLoss: 0.363894\n",
      "2192\tTrain Epoch: 23 [35840/60000 (59%)]\tLoss: 0.280077\n",
      "2192\tTrain Epoch: 23 [40960/60000 (68%)]\tLoss: 0.245063\n",
      "2192\tTrain Epoch: 23 [46080/60000 (76%)]\tLoss: 0.299148\n",
      "2192\tTrain Epoch: 23 [51200/60000 (85%)]\tLoss: 0.249664\n",
      "2192\tTrain Epoch: 23 [56320/60000 (93%)]\tLoss: 0.266821\n",
      "2192\tTrain Epoch: 24 [0/60000 (0%)]\tLoss: 0.281733\n",
      "2192\tTrain Epoch: 24 [5120/60000 (8%)]\tLoss: 0.311037\n",
      "2192\tTrain Epoch: 24 [10240/60000 (17%)]\tLoss: 0.262953\n",
      "2192\tTrain Epoch: 24 [15360/60000 (25%)]\tLoss: 0.258965\n",
      "2192\tTrain Epoch: 24 [20480/60000 (34%)]\tLoss: 0.332853\n",
      "2192\tTrain Epoch: 24 [25600/60000 (42%)]\tLoss: 0.320459\n",
      "2192\tTrain Epoch: 24 [30720/60000 (51%)]\tLoss: 0.275050\n",
      "2192\tTrain Epoch: 24 [35840/60000 (59%)]\tLoss: 0.315369\n",
      "2192\tTrain Epoch: 24 [40960/60000 (68%)]\tLoss: 0.297338\n",
      "2192\tTrain Epoch: 24 [46080/60000 (76%)]\tLoss: 0.257777\n",
      "2192\tTrain Epoch: 24 [51200/60000 (85%)]\tLoss: 0.285806\n",
      "2192\tTrain Epoch: 24 [56320/60000 (93%)]\tLoss: 0.257740\n",
      "2192\tTrain Epoch: 25 [0/60000 (0%)]\tLoss: 0.317290\n",
      "2192\tTrain Epoch: 25 [5120/60000 (8%)]\tLoss: 0.384859\n",
      "2192\tTrain Epoch: 25 [10240/60000 (17%)]\tLoss: 0.324009\n",
      "2192\tTrain Epoch: 25 [15360/60000 (25%)]\tLoss: 0.291924\n",
      "2192\tTrain Epoch: 25 [20480/60000 (34%)]\tLoss: 0.225802\n",
      "2192\tTrain Epoch: 25 [25600/60000 (42%)]\tLoss: 0.278556\n",
      "2192\tTrain Epoch: 25 [30720/60000 (51%)]\tLoss: 0.300056\n",
      "2192\tTrain Epoch: 25 [35840/60000 (59%)]\tLoss: 0.269265\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2192\tTrain Epoch: 25 [40960/60000 (68%)]\tLoss: 0.268164\n",
      "2192\tTrain Epoch: 25 [46080/60000 (76%)]\tLoss: 0.300512\n",
      "2192\tTrain Epoch: 25 [51200/60000 (85%)]\tLoss: 0.271007\n",
      "2192\tTrain Epoch: 25 [56320/60000 (93%)]\tLoss: 0.243105\n",
      "2192\tTrain Epoch: 26 [0/60000 (0%)]\tLoss: 0.282887\n",
      "2192\tTrain Epoch: 26 [5120/60000 (8%)]\tLoss: 0.254658\n",
      "2192\tTrain Epoch: 26 [10240/60000 (17%)]\tLoss: 0.242220\n",
      "2192\tTrain Epoch: 26 [15360/60000 (25%)]\tLoss: 0.313689\n",
      "2192\tTrain Epoch: 26 [20480/60000 (34%)]\tLoss: 0.255744\n",
      "2192\tTrain Epoch: 26 [25600/60000 (42%)]\tLoss: 0.259870\n",
      "2192\tTrain Epoch: 26 [30720/60000 (51%)]\tLoss: 0.270391\n",
      "2192\tTrain Epoch: 26 [35840/60000 (59%)]\tLoss: 0.252899\n",
      "2192\tTrain Epoch: 26 [40960/60000 (68%)]\tLoss: 0.279015\n",
      "2192\tTrain Epoch: 26 [46080/60000 (76%)]\tLoss: 0.297439\n",
      "2192\tTrain Epoch: 26 [51200/60000 (85%)]\tLoss: 0.343756\n",
      "2192\tTrain Epoch: 26 [56320/60000 (93%)]\tLoss: 0.236656\n",
      "2192\tTrain Epoch: 27 [0/60000 (0%)]\tLoss: 0.257299\n",
      "2192\tTrain Epoch: 27 [5120/60000 (8%)]\tLoss: 0.266466\n",
      "2192\tTrain Epoch: 27 [10240/60000 (17%)]\tLoss: 0.277200\n",
      "2192\tTrain Epoch: 27 [15360/60000 (25%)]\tLoss: 0.283469\n",
      "2192\tTrain Epoch: 27 [20480/60000 (34%)]\tLoss: 0.290600\n",
      "2192\tTrain Epoch: 27 [25600/60000 (42%)]\tLoss: 0.256217\n",
      "2192\tTrain Epoch: 27 [30720/60000 (51%)]\tLoss: 0.303094\n",
      "2192\tTrain Epoch: 27 [35840/60000 (59%)]\tLoss: 0.237241\n",
      "2192\tTrain Epoch: 27 [40960/60000 (68%)]\tLoss: 0.240015\n",
      "2192\tTrain Epoch: 27 [46080/60000 (76%)]\tLoss: 0.269732\n",
      "2192\tTrain Epoch: 27 [51200/60000 (85%)]\tLoss: 0.316242\n",
      "2192\tTrain Epoch: 27 [56320/60000 (93%)]\tLoss: 0.314043\n",
      "2192\tTrain Epoch: 28 [0/60000 (0%)]\tLoss: 0.230194\n",
      "2192\tTrain Epoch: 28 [5120/60000 (8%)]\tLoss: 0.316372\n",
      "2192\tTrain Epoch: 28 [10240/60000 (17%)]\tLoss: 0.269412\n",
      "2192\tTrain Epoch: 28 [15360/60000 (25%)]\tLoss: 0.319265\n",
      "2192\tTrain Epoch: 28 [20480/60000 (34%)]\tLoss: 0.237712\n",
      "2192\tTrain Epoch: 28 [25600/60000 (42%)]\tLoss: 0.240569\n",
      "2192\tTrain Epoch: 28 [30720/60000 (51%)]\tLoss: 0.310632\n",
      "2192\tTrain Epoch: 28 [35840/60000 (59%)]\tLoss: 0.263912\n",
      "2192\tTrain Epoch: 28 [40960/60000 (68%)]\tLoss: 0.298831\n",
      "2192\tTrain Epoch: 28 [46080/60000 (76%)]\tLoss: 0.259905\n",
      "2192\tTrain Epoch: 28 [51200/60000 (85%)]\tLoss: 0.206354\n",
      "2192\tTrain Epoch: 28 [56320/60000 (93%)]\tLoss: 0.264139\n",
      "2192\tTrain Epoch: 29 [0/60000 (0%)]\tLoss: 0.310262\n",
      "2192\tTrain Epoch: 29 [5120/60000 (8%)]\tLoss: 0.298337\n",
      "2192\tTrain Epoch: 29 [10240/60000 (17%)]\tLoss: 0.298144\n",
      "2192\tTrain Epoch: 29 [15360/60000 (25%)]\tLoss: 0.267246\n",
      "2192\tTrain Epoch: 29 [20480/60000 (34%)]\tLoss: 0.269195\n",
      "2192\tTrain Epoch: 29 [25600/60000 (42%)]\tLoss: 0.316323\n",
      "2192\tTrain Epoch: 29 [30720/60000 (51%)]\tLoss: 0.288654\n",
      "2192\tTrain Epoch: 29 [35840/60000 (59%)]\tLoss: 0.258645\n",
      "2192\tTrain Epoch: 29 [40960/60000 (68%)]\tLoss: 0.234020\n",
      "2192\tTrain Epoch: 29 [46080/60000 (76%)]\tLoss: 0.266025\n",
      "2192\tTrain Epoch: 29 [51200/60000 (85%)]\tLoss: 0.203826\n",
      "2192\tTrain Epoch: 29 [56320/60000 (93%)]\tLoss: 0.272813\n",
      "2192\tTrain Epoch: 30 [0/60000 (0%)]\tLoss: 0.232310\n",
      "2192\tTrain Epoch: 30 [5120/60000 (8%)]\tLoss: 0.279674\n",
      "2192\tTrain Epoch: 30 [10240/60000 (17%)]\tLoss: 0.265034\n",
      "2192\tTrain Epoch: 30 [15360/60000 (25%)]\tLoss: 0.379390\n",
      "2192\tTrain Epoch: 30 [20480/60000 (34%)]\tLoss: 0.320747\n",
      "2192\tTrain Epoch: 30 [25600/60000 (42%)]\tLoss: 0.297547\n",
      "2192\tTrain Epoch: 30 [30720/60000 (51%)]\tLoss: 0.293750\n",
      "2192\tTrain Epoch: 30 [35840/60000 (59%)]\tLoss: 0.255220\n",
      "2192\tTrain Epoch: 30 [40960/60000 (68%)]\tLoss: 0.261419\n",
      "2192\tTrain Epoch: 30 [46080/60000 (76%)]\tLoss: 0.260493\n",
      "2192\tTrain Epoch: 30 [51200/60000 (85%)]\tLoss: 0.246047\n",
      "2192\tTrain Epoch: 30 [56320/60000 (93%)]\tLoss: 0.233302\n",
      "2192\tTrain Epoch: 31 [0/60000 (0%)]\tLoss: 0.207426\n",
      "2192\tTrain Epoch: 31 [5120/60000 (8%)]\tLoss: 0.312614\n",
      "2192\tTrain Epoch: 31 [10240/60000 (17%)]\tLoss: 0.298458\n",
      "2192\tTrain Epoch: 31 [15360/60000 (25%)]\tLoss: 0.283684\n",
      "2192\tTrain Epoch: 31 [20480/60000 (34%)]\tLoss: 0.284656\n",
      "2192\tTrain Epoch: 31 [25600/60000 (42%)]\tLoss: 0.283800\n",
      "2192\tTrain Epoch: 31 [30720/60000 (51%)]\tLoss: 0.344671\n",
      "2192\tTrain Epoch: 31 [35840/60000 (59%)]\tLoss: 0.301613\n",
      "2192\tTrain Epoch: 31 [40960/60000 (68%)]\tLoss: 0.273219\n",
      "2192\tTrain Epoch: 31 [46080/60000 (76%)]\tLoss: 0.313081\n",
      "2192\tTrain Epoch: 31 [51200/60000 (85%)]\tLoss: 0.256775\n",
      "2192\tTrain Epoch: 31 [56320/60000 (93%)]\tLoss: 0.279782\n",
      "2192\tTrain Epoch: 32 [0/60000 (0%)]\tLoss: 0.311260\n",
      "2192\tTrain Epoch: 32 [5120/60000 (8%)]\tLoss: 0.247777\n",
      "2192\tTrain Epoch: 32 [10240/60000 (17%)]\tLoss: 0.233683\n",
      "2192\tTrain Epoch: 32 [15360/60000 (25%)]\tLoss: 0.265812\n",
      "2192\tTrain Epoch: 32 [20480/60000 (34%)]\tLoss: 0.226946\n",
      "2192\tTrain Epoch: 32 [25600/60000 (42%)]\tLoss: 0.212488\n",
      "2192\tTrain Epoch: 32 [30720/60000 (51%)]\tLoss: 0.266219\n",
      "2192\tTrain Epoch: 32 [35840/60000 (59%)]\tLoss: 0.084237\n",
      "2192\tTrain Epoch: 32 [40960/60000 (68%)]\tLoss: 0.093232\n",
      "2192\tTrain Epoch: 32 [46080/60000 (76%)]\tLoss: 0.071958\n",
      "2192\tTrain Epoch: 32 [51200/60000 (85%)]\tLoss: 0.060451\n",
      "2192\tTrain Epoch: 32 [56320/60000 (93%)]\tLoss: 0.058365\n",
      "2192\tTrain Epoch: 33 [0/60000 (0%)]\tLoss: 0.056341\n",
      "2192\tTrain Epoch: 33 [5120/60000 (8%)]\tLoss: 0.066278\n",
      "2192\tTrain Epoch: 33 [10240/60000 (17%)]\tLoss: 0.082690\n",
      "2192\tTrain Epoch: 33 [15360/60000 (25%)]\tLoss: 0.108456\n",
      "2192\tTrain Epoch: 33 [20480/60000 (34%)]\tLoss: 0.065551\n",
      "2192\tTrain Epoch: 33 [25600/60000 (42%)]\tLoss: 0.058151\n",
      "2192\tTrain Epoch: 33 [30720/60000 (51%)]\tLoss: 0.065847\n",
      "2192\tTrain Epoch: 33 [35840/60000 (59%)]\tLoss: 0.043239\n",
      "2192\tTrain Epoch: 33 [40960/60000 (68%)]\tLoss: 0.062679\n",
      "2192\tTrain Epoch: 33 [46080/60000 (76%)]\tLoss: 0.089351\n",
      "2192\tTrain Epoch: 33 [51200/60000 (85%)]\tLoss: 0.047675\n",
      "2192\tTrain Epoch: 33 [56320/60000 (93%)]\tLoss: 0.079729\n",
      "2192\tTrain Epoch: 34 [0/60000 (0%)]\tLoss: 0.055838\n",
      "2192\tTrain Epoch: 34 [5120/60000 (8%)]\tLoss: 0.058995\n",
      "2192\tTrain Epoch: 34 [10240/60000 (17%)]\tLoss: 0.050480\n",
      "2192\tTrain Epoch: 34 [15360/60000 (25%)]\tLoss: 0.049930\n",
      "2192\tTrain Epoch: 34 [20480/60000 (34%)]\tLoss: 0.102047\n",
      "2192\tTrain Epoch: 34 [25600/60000 (42%)]\tLoss: 0.046701\n",
      "2192\tTrain Epoch: 34 [30720/60000 (51%)]\tLoss: 0.071438\n",
      "2192\tTrain Epoch: 34 [35840/60000 (59%)]\tLoss: 0.059404\n",
      "2192\tTrain Epoch: 34 [40960/60000 (68%)]\tLoss: 0.052229\n",
      "2192\tTrain Epoch: 34 [46080/60000 (76%)]\tLoss: 0.066701\n",
      "2192\tTrain Epoch: 34 [51200/60000 (85%)]\tLoss: 0.059450\n",
      "2192\tTrain Epoch: 34 [56320/60000 (93%)]\tLoss: 0.064729\n",
      "2192\tTrain Epoch: 35 [0/60000 (0%)]\tLoss: 0.064023\n",
      "2192\tTrain Epoch: 35 [5120/60000 (8%)]\tLoss: 0.053657\n",
      "2192\tTrain Epoch: 35 [10240/60000 (17%)]\tLoss: 0.050978\n",
      "2192\tTrain Epoch: 35 [15360/60000 (25%)]\tLoss: 0.046115\n",
      "2192\tTrain Epoch: 35 [20480/60000 (34%)]\tLoss: 0.049221\n",
      "2192\tTrain Epoch: 35 [25600/60000 (42%)]\tLoss: 0.085092\n",
      "2192\tTrain Epoch: 35 [30720/60000 (51%)]\tLoss: 0.055799\n",
      "2192\tTrain Epoch: 35 [35840/60000 (59%)]\tLoss: 0.040998\n",
      "2192\tTrain Epoch: 35 [40960/60000 (68%)]\tLoss: 0.034036\n",
      "2192\tTrain Epoch: 35 [46080/60000 (76%)]\tLoss: 0.051335\n",
      "2192\tTrain Epoch: 35 [51200/60000 (85%)]\tLoss: 0.052873\n",
      "2192\tTrain Epoch: 35 [56320/60000 (93%)]\tLoss: 0.053135\n",
      "2192\tTrain Epoch: 36 [0/60000 (0%)]\tLoss: 0.051352\n",
      "2192\tTrain Epoch: 36 [5120/60000 (8%)]\tLoss: 0.042747\n",
      "2192\tTrain Epoch: 36 [10240/60000 (17%)]\tLoss: 0.055498\n",
      "2192\tTrain Epoch: 36 [15360/60000 (25%)]\tLoss: 0.062362\n",
      "2192\tTrain Epoch: 36 [20480/60000 (34%)]\tLoss: 0.049329\n",
      "2192\tTrain Epoch: 36 [25600/60000 (42%)]\tLoss: 0.077005\n",
      "2192\tTrain Epoch: 36 [30720/60000 (51%)]\tLoss: 0.064089\n",
      "2192\tTrain Epoch: 36 [35840/60000 (59%)]\tLoss: 0.058764\n",
      "2192\tTrain Epoch: 36 [40960/60000 (68%)]\tLoss: 0.080850\n",
      "2192\tTrain Epoch: 36 [46080/60000 (76%)]\tLoss: 0.045989\n",
      "2192\tTrain Epoch: 36 [51200/60000 (85%)]\tLoss: 0.063001\n",
      "2192\tTrain Epoch: 36 [56320/60000 (93%)]\tLoss: 0.056087\n",
      "2192\tTrain Epoch: 37 [0/60000 (0%)]\tLoss: 0.057976\n",
      "2192\tTrain Epoch: 37 [5120/60000 (8%)]\tLoss: 0.076224\n",
      "2192\tTrain Epoch: 37 [10240/60000 (17%)]\tLoss: 0.078471\n",
      "2192\tTrain Epoch: 37 [15360/60000 (25%)]\tLoss: 0.052955\n",
      "2192\tTrain Epoch: 37 [20480/60000 (34%)]\tLoss: 0.045698\n",
      "2192\tTrain Epoch: 37 [25600/60000 (42%)]\tLoss: 0.048919\n",
      "2192\tTrain Epoch: 37 [30720/60000 (51%)]\tLoss: 0.039123\n",
      "2192\tTrain Epoch: 37 [35840/60000 (59%)]\tLoss: 0.079639\n",
      "2192\tTrain Epoch: 37 [40960/60000 (68%)]\tLoss: 0.045547\n",
      "2192\tTrain Epoch: 37 [46080/60000 (76%)]\tLoss: 0.059049\n",
      "2192\tTrain Epoch: 37 [51200/60000 (85%)]\tLoss: 0.030306\n",
      "2192\tTrain Epoch: 37 [56320/60000 (93%)]\tLoss: 0.043078\n",
      "2192\tTrain Epoch: 38 [0/60000 (0%)]\tLoss: 0.036952\n",
      "2192\tTrain Epoch: 38 [5120/60000 (8%)]\tLoss: 0.066876\n",
      "2192\tTrain Epoch: 38 [10240/60000 (17%)]\tLoss: 0.060874\n",
      "2192\tTrain Epoch: 38 [15360/60000 (25%)]\tLoss: 0.039528\n",
      "2192\tTrain Epoch: 38 [20480/60000 (34%)]\tLoss: 0.063777\n",
      "2192\tTrain Epoch: 38 [25600/60000 (42%)]\tLoss: 0.056329\n",
      "2192\tTrain Epoch: 38 [30720/60000 (51%)]\tLoss: 0.054640\n",
      "2192\tTrain Epoch: 38 [35840/60000 (59%)]\tLoss: 0.048854\n",
      "2192\tTrain Epoch: 38 [40960/60000 (68%)]\tLoss: 0.050394\n",
      "2192\tTrain Epoch: 38 [46080/60000 (76%)]\tLoss: 0.051380\n",
      "2192\tTrain Epoch: 38 [51200/60000 (85%)]\tLoss: 0.040030\n",
      "2192\tTrain Epoch: 38 [56320/60000 (93%)]\tLoss: 0.079050\n",
      "2192\tTrain Epoch: 39 [0/60000 (0%)]\tLoss: 0.034496\n",
      "2192\tTrain Epoch: 39 [5120/60000 (8%)]\tLoss: 0.055062\n",
      "2192\tTrain Epoch: 39 [10240/60000 (17%)]\tLoss: 0.026110\n",
      "2192\tTrain Epoch: 39 [15360/60000 (25%)]\tLoss: 0.039501\n",
      "2192\tTrain Epoch: 39 [20480/60000 (34%)]\tLoss: 0.064750\n",
      "2192\tTrain Epoch: 39 [25600/60000 (42%)]\tLoss: 0.068547\n",
      "2192\tTrain Epoch: 39 [30720/60000 (51%)]\tLoss: 0.085681\n",
      "2192\tTrain Epoch: 39 [35840/60000 (59%)]\tLoss: 0.038938\n",
      "2192\tTrain Epoch: 39 [40960/60000 (68%)]\tLoss: 0.056547\n",
      "2192\tTrain Epoch: 39 [46080/60000 (76%)]\tLoss: 0.037940\n",
      "2192\tTrain Epoch: 39 [51200/60000 (85%)]\tLoss: 0.048361\n",
      "2192\tTrain Epoch: 39 [56320/60000 (93%)]\tLoss: 0.045682\n",
      "2192\tTrain Epoch: 40 [0/60000 (0%)]\tLoss: 0.037803\n",
      "2192\tTrain Epoch: 40 [5120/60000 (8%)]\tLoss: 0.063600\n",
      "2192\tTrain Epoch: 40 [10240/60000 (17%)]\tLoss: 0.058086\n",
      "2192\tTrain Epoch: 40 [15360/60000 (25%)]\tLoss: 0.038571\n",
      "2192\tTrain Epoch: 40 [20480/60000 (34%)]\tLoss: 0.046025\n",
      "2192\tTrain Epoch: 40 [25600/60000 (42%)]\tLoss: 0.062578\n",
      "2192\tTrain Epoch: 40 [30720/60000 (51%)]\tLoss: 0.047131\n",
      "2192\tTrain Epoch: 40 [35840/60000 (59%)]\tLoss: 0.054985\n",
      "2192\tTrain Epoch: 40 [40960/60000 (68%)]\tLoss: 0.040671\n",
      "2192\tTrain Epoch: 40 [46080/60000 (76%)]\tLoss: 0.064071\n",
      "2192\tTrain Epoch: 40 [51200/60000 (85%)]\tLoss: 0.058362\n",
      "2192\tTrain Epoch: 40 [56320/60000 (93%)]\tLoss: 0.076547\n",
      "2192\tTrain Epoch: 41 [0/60000 (0%)]\tLoss: 0.030121\n",
      "2192\tTrain Epoch: 41 [5120/60000 (8%)]\tLoss: 0.047455\n",
      "2192\tTrain Epoch: 41 [10240/60000 (17%)]\tLoss: 0.095222\n",
      "2192\tTrain Epoch: 41 [15360/60000 (25%)]\tLoss: 0.052604\n",
      "2192\tTrain Epoch: 41 [20480/60000 (34%)]\tLoss: 0.073520\n",
      "2192\tTrain Epoch: 41 [25600/60000 (42%)]\tLoss: 0.034429\n",
      "2192\tTrain Epoch: 41 [30720/60000 (51%)]\tLoss: 0.027472\n",
      "2192\tTrain Epoch: 41 [35840/60000 (59%)]\tLoss: 0.044937\n",
      "2192\tTrain Epoch: 41 [40960/60000 (68%)]\tLoss: 0.033846\n",
      "2192\tTrain Epoch: 41 [46080/60000 (76%)]\tLoss: 0.044273\n",
      "2192\tTrain Epoch: 41 [51200/60000 (85%)]\tLoss: 0.067819\n",
      "2192\tTrain Epoch: 41 [56320/60000 (93%)]\tLoss: 0.045398\n",
      "2192\tTrain Epoch: 42 [0/60000 (0%)]\tLoss: 0.014982\n",
      "2192\tTrain Epoch: 42 [5120/60000 (8%)]\tLoss: 0.039346\n",
      "2192\tTrain Epoch: 42 [10240/60000 (17%)]\tLoss: 0.046284\n",
      "2192\tTrain Epoch: 42 [15360/60000 (25%)]\tLoss: 0.031884\n",
      "2192\tTrain Epoch: 42 [20480/60000 (34%)]\tLoss: 0.021046\n",
      "2192\tTrain Epoch: 42 [25600/60000 (42%)]\tLoss: 0.041065\n",
      "2192\tTrain Epoch: 42 [30720/60000 (51%)]\tLoss: 0.027406\n",
      "2192\tTrain Epoch: 42 [35840/60000 (59%)]\tLoss: 0.033577\n",
      "2192\tTrain Epoch: 42 [40960/60000 (68%)]\tLoss: 0.068771\n",
      "2192\tTrain Epoch: 42 [46080/60000 (76%)]\tLoss: 0.042276\n",
      "2192\tTrain Epoch: 42 [51200/60000 (85%)]\tLoss: 0.048278\n",
      "2192\tTrain Epoch: 42 [56320/60000 (93%)]\tLoss: 0.050680\n",
      "2192\tTrain Epoch: 43 [0/60000 (0%)]\tLoss: 0.050584\n",
      "2192\tTrain Epoch: 43 [5120/60000 (8%)]\tLoss: 0.056083\n",
      "2192\tTrain Epoch: 43 [10240/60000 (17%)]\tLoss: 0.031370\n",
      "2192\tTrain Epoch: 43 [15360/60000 (25%)]\tLoss: 0.023482\n",
      "2192\tTrain Epoch: 43 [20480/60000 (34%)]\tLoss: 0.049883\n",
      "2192\tTrain Epoch: 43 [25600/60000 (42%)]\tLoss: 0.030529\n",
      "2192\tTrain Epoch: 43 [30720/60000 (51%)]\tLoss: 0.030101\n",
      "2192\tTrain Epoch: 43 [35840/60000 (59%)]\tLoss: 0.056610\n",
      "2192\tTrain Epoch: 43 [40960/60000 (68%)]\tLoss: 0.041459\n",
      "2192\tTrain Epoch: 43 [46080/60000 (76%)]\tLoss: 0.056544\n",
      "2192\tTrain Epoch: 43 [51200/60000 (85%)]\tLoss: 0.049246\n",
      "2192\tTrain Epoch: 43 [56320/60000 (93%)]\tLoss: 0.051253\n",
      "2192\tTrain Epoch: 44 [0/60000 (0%)]\tLoss: 0.071715\n",
      "2192\tTrain Epoch: 44 [5120/60000 (8%)]\tLoss: 0.044944\n",
      "2192\tTrain Epoch: 44 [10240/60000 (17%)]\tLoss: 0.027906\n",
      "2192\tTrain Epoch: 44 [15360/60000 (25%)]\tLoss: 0.037995\n",
      "2192\tTrain Epoch: 44 [20480/60000 (34%)]\tLoss: 0.032410\n",
      "2192\tTrain Epoch: 44 [25600/60000 (42%)]\tLoss: 0.038806\n",
      "2192\tTrain Epoch: 44 [30720/60000 (51%)]\tLoss: 0.055478\n",
      "2192\tTrain Epoch: 44 [35840/60000 (59%)]\tLoss: 0.032173\n",
      "2192\tTrain Epoch: 44 [40960/60000 (68%)]\tLoss: 0.045663\n",
      "2192\tTrain Epoch: 44 [46080/60000 (76%)]\tLoss: 0.063433\n",
      "2192\tTrain Epoch: 44 [51200/60000 (85%)]\tLoss: 0.042354\n",
      "2192\tTrain Epoch: 44 [56320/60000 (93%)]\tLoss: 0.066800\n",
      "2192\tTrain Epoch: 45 [0/60000 (0%)]\tLoss: 0.087983\n",
      "2192\tTrain Epoch: 45 [5120/60000 (8%)]\tLoss: 0.046399\n",
      "2192\tTrain Epoch: 45 [10240/60000 (17%)]\tLoss: 0.061052\n",
      "2192\tTrain Epoch: 45 [15360/60000 (25%)]\tLoss: 0.027217\n",
      "2192\tTrain Epoch: 45 [20480/60000 (34%)]\tLoss: 0.046676\n",
      "2192\tTrain Epoch: 45 [25600/60000 (42%)]\tLoss: 0.044611\n",
      "2192\tTrain Epoch: 45 [30720/60000 (51%)]\tLoss: 0.050874\n",
      "2192\tTrain Epoch: 45 [35840/60000 (59%)]\tLoss: 0.036851\n",
      "2192\tTrain Epoch: 45 [40960/60000 (68%)]\tLoss: 0.057068\n",
      "2192\tTrain Epoch: 45 [46080/60000 (76%)]\tLoss: 0.033179\n",
      "2192\tTrain Epoch: 45 [51200/60000 (85%)]\tLoss: 0.016889\n",
      "2192\tTrain Epoch: 45 [56320/60000 (93%)]\tLoss: 0.046948\n",
      "2192\tTrain Epoch: 46 [0/60000 (0%)]\tLoss: 0.043890\n",
      "2192\tTrain Epoch: 46 [5120/60000 (8%)]\tLoss: 0.038943\n",
      "2192\tTrain Epoch: 46 [10240/60000 (17%)]\tLoss: 0.035931\n",
      "2192\tTrain Epoch: 46 [15360/60000 (25%)]\tLoss: 0.063651\n",
      "2192\tTrain Epoch: 46 [20480/60000 (34%)]\tLoss: 0.047546\n",
      "2192\tTrain Epoch: 46 [25600/60000 (42%)]\tLoss: 0.021235\n",
      "2192\tTrain Epoch: 46 [30720/60000 (51%)]\tLoss: 0.045535\n",
      "2192\tTrain Epoch: 46 [35840/60000 (59%)]\tLoss: 0.026779\n",
      "2192\tTrain Epoch: 46 [40960/60000 (68%)]\tLoss: 0.040437\n",
      "2192\tTrain Epoch: 46 [46080/60000 (76%)]\tLoss: 0.030402\n",
      "2192\tTrain Epoch: 46 [51200/60000 (85%)]\tLoss: 0.047173\n",
      "2192\tTrain Epoch: 46 [56320/60000 (93%)]\tLoss: 0.046346\n",
      "2192\tTrain Epoch: 47 [0/60000 (0%)]\tLoss: 0.042666\n",
      "2192\tTrain Epoch: 47 [5120/60000 (8%)]\tLoss: 0.036418\n",
      "2192\tTrain Epoch: 47 [10240/60000 (17%)]\tLoss: 0.053752\n",
      "2192\tTrain Epoch: 47 [15360/60000 (25%)]\tLoss: 0.054136\n",
      "2192\tTrain Epoch: 47 [20480/60000 (34%)]\tLoss: 0.052388\n",
      "2192\tTrain Epoch: 47 [25600/60000 (42%)]\tLoss: 0.061805\n",
      "2192\tTrain Epoch: 47 [30720/60000 (51%)]\tLoss: 0.056955\n",
      "2192\tTrain Epoch: 47 [35840/60000 (59%)]\tLoss: 0.052109\n",
      "2192\tTrain Epoch: 47 [40960/60000 (68%)]\tLoss: 0.035340\n",
      "2192\tTrain Epoch: 47 [46080/60000 (76%)]\tLoss: 0.034516\n",
      "2192\tTrain Epoch: 47 [51200/60000 (85%)]\tLoss: 0.020925\n",
      "2192\tTrain Epoch: 47 [56320/60000 (93%)]\tLoss: 0.040926\n",
      "2192\tTrain Epoch: 48 [0/60000 (0%)]\tLoss: 0.030271\n",
      "2192\tTrain Epoch: 48 [5120/60000 (8%)]\tLoss: 0.046072\n",
      "2192\tTrain Epoch: 48 [10240/60000 (17%)]\tLoss: 0.064549\n",
      "2192\tTrain Epoch: 48 [15360/60000 (25%)]\tLoss: 0.042594\n",
      "2192\tTrain Epoch: 48 [20480/60000 (34%)]\tLoss: 0.026429\n",
      "2192\tTrain Epoch: 48 [25600/60000 (42%)]\tLoss: 0.044754\n",
      "2192\tTrain Epoch: 48 [30720/60000 (51%)]\tLoss: 0.044483\n",
      "2192\tTrain Epoch: 48 [35840/60000 (59%)]\tLoss: 0.025571\n",
      "2192\tTrain Epoch: 48 [40960/60000 (68%)]\tLoss: 0.062255\n",
      "2192\tTrain Epoch: 48 [46080/60000 (76%)]\tLoss: 0.052139\n",
      "2192\tTrain Epoch: 48 [51200/60000 (85%)]\tLoss: 0.088962\n",
      "2192\tTrain Epoch: 48 [56320/60000 (93%)]\tLoss: 0.054851\n",
      "2192\tTrain Epoch: 49 [0/60000 (0%)]\tLoss: 0.034808\n",
      "2192\tTrain Epoch: 49 [5120/60000 (8%)]\tLoss: 0.034330\n",
      "2192\tTrain Epoch: 49 [10240/60000 (17%)]\tLoss: 0.036496\n",
      "2192\tTrain Epoch: 49 [15360/60000 (25%)]\tLoss: 0.045125\n",
      "2192\tTrain Epoch: 49 [20480/60000 (34%)]\tLoss: 0.031689\n",
      "2192\tTrain Epoch: 49 [25600/60000 (42%)]\tLoss: 0.021841\n",
      "2192\tTrain Epoch: 49 [30720/60000 (51%)]\tLoss: 0.045892\n",
      "2192\tTrain Epoch: 49 [35840/60000 (59%)]\tLoss: 0.035808\n",
      "2192\tTrain Epoch: 49 [40960/60000 (68%)]\tLoss: 0.085252\n",
      "2192\tTrain Epoch: 49 [46080/60000 (76%)]\tLoss: 0.048999\n",
      "2192\tTrain Epoch: 49 [51200/60000 (85%)]\tLoss: 0.041812\n",
      "2192\tTrain Epoch: 49 [56320/60000 (93%)]\tLoss: 0.043847\n",
      "2192\tTrain Epoch: 50 [0/60000 (0%)]\tLoss: 0.030590\n",
      "2192\tTrain Epoch: 50 [5120/60000 (8%)]\tLoss: 0.059219\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2192\tTrain Epoch: 50 [10240/60000 (17%)]\tLoss: 0.047798\n",
      "2192\tTrain Epoch: 50 [15360/60000 (25%)]\tLoss: 0.027124\n",
      "2192\tTrain Epoch: 50 [20480/60000 (34%)]\tLoss: 0.019361\n",
      "2192\tTrain Epoch: 50 [25600/60000 (42%)]\tLoss: 0.033059\n",
      "2192\tTrain Epoch: 50 [30720/60000 (51%)]\tLoss: 0.049599\n",
      "2192\tTrain Epoch: 50 [35840/60000 (59%)]\tLoss: 0.061868\n",
      "2192\tTrain Epoch: 50 [40960/60000 (68%)]\tLoss: 0.033561\n",
      "2192\tTrain Epoch: 50 [46080/60000 (76%)]\tLoss: 0.044369\n",
      "2192\tTrain Epoch: 50 [51200/60000 (85%)]\tLoss: 0.046487\n",
      "2192\tTrain Epoch: 50 [56320/60000 (93%)]\tLoss: 0.028719\n",
      "2192\tTrain Epoch: 51 [0/60000 (0%)]\tLoss: 0.025807\n",
      "2192\tTrain Epoch: 51 [5120/60000 (8%)]\tLoss: 0.037096\n",
      "2192\tTrain Epoch: 51 [10240/60000 (17%)]\tLoss: 0.036061\n",
      "2192\tTrain Epoch: 51 [15360/60000 (25%)]\tLoss: 0.033781\n",
      "2192\tTrain Epoch: 51 [20480/60000 (34%)]\tLoss: 0.021504\n",
      "2192\tTrain Epoch: 51 [25600/60000 (42%)]\tLoss: 0.046102\n",
      "2192\tTrain Epoch: 51 [30720/60000 (51%)]\tLoss: 0.063019\n",
      "2192\tTrain Epoch: 51 [35840/60000 (59%)]\tLoss: 0.063311\n",
      "2192\tTrain Epoch: 51 [40960/60000 (68%)]\tLoss: 0.054214\n",
      "2192\tTrain Epoch: 51 [46080/60000 (76%)]\tLoss: 0.039092\n",
      "2192\tTrain Epoch: 51 [51200/60000 (85%)]\tLoss: 0.038706\n",
      "2192\tTrain Epoch: 51 [56320/60000 (93%)]\tLoss: 0.040859\n",
      "2192\tTrain Epoch: 52 [0/60000 (0%)]\tLoss: 0.028263\n",
      "2192\tTrain Epoch: 52 [5120/60000 (8%)]\tLoss: 0.052647\n",
      "2192\tTrain Epoch: 52 [10240/60000 (17%)]\tLoss: 0.074429\n",
      "2192\tTrain Epoch: 52 [15360/60000 (25%)]\tLoss: 0.050485\n",
      "2192\tTrain Epoch: 52 [20480/60000 (34%)]\tLoss: 0.054636\n",
      "2192\tTrain Epoch: 52 [25600/60000 (42%)]\tLoss: 0.020481\n",
      "2192\tTrain Epoch: 52 [30720/60000 (51%)]\tLoss: 0.046916\n",
      "2192\tTrain Epoch: 52 [35840/60000 (59%)]\tLoss: 0.015776\n",
      "2192\tTrain Epoch: 52 [40960/60000 (68%)]\tLoss: 0.023150\n",
      "2192\tTrain Epoch: 52 [46080/60000 (76%)]\tLoss: 0.027798\n",
      "2192\tTrain Epoch: 52 [51200/60000 (85%)]\tLoss: 0.031895\n",
      "2192\tTrain Epoch: 52 [56320/60000 (93%)]\tLoss: 0.031817\n",
      "2192\tTrain Epoch: 53 [0/60000 (0%)]\tLoss: 0.018391\n",
      "2192\tTrain Epoch: 53 [5120/60000 (8%)]\tLoss: 0.031867\n",
      "2192\tTrain Epoch: 53 [10240/60000 (17%)]\tLoss: 0.021179\n",
      "2192\tTrain Epoch: 53 [15360/60000 (25%)]\tLoss: 0.020126\n",
      "2192\tTrain Epoch: 53 [20480/60000 (34%)]\tLoss: 0.038811\n",
      "2192\tTrain Epoch: 53 [25600/60000 (42%)]\tLoss: 0.047193\n",
      "2192\tTrain Epoch: 53 [30720/60000 (51%)]\tLoss: 0.021187\n",
      "2192\tTrain Epoch: 53 [35840/60000 (59%)]\tLoss: 0.034890\n",
      "2192\tTrain Epoch: 53 [40960/60000 (68%)]\tLoss: 0.034463\n",
      "2192\tTrain Epoch: 53 [46080/60000 (76%)]\tLoss: 0.017170\n",
      "2192\tTrain Epoch: 53 [51200/60000 (85%)]\tLoss: 0.025052\n",
      "2192\tTrain Epoch: 53 [56320/60000 (93%)]\tLoss: 0.028384\n",
      "2192\tTrain Epoch: 54 [0/60000 (0%)]\tLoss: 0.039475\n",
      "2192\tTrain Epoch: 54 [5120/60000 (8%)]\tLoss: 0.024909\n",
      "2192\tTrain Epoch: 54 [10240/60000 (17%)]\tLoss: 0.020468\n",
      "2192\tTrain Epoch: 54 [15360/60000 (25%)]\tLoss: 0.030597\n",
      "2192\tTrain Epoch: 54 [20480/60000 (34%)]\tLoss: 0.032326\n",
      "2192\tTrain Epoch: 54 [25600/60000 (42%)]\tLoss: 0.034993\n",
      "2192\tTrain Epoch: 54 [30720/60000 (51%)]\tLoss: 0.023576\n",
      "2192\tTrain Epoch: 54 [35840/60000 (59%)]\tLoss: 0.034516\n",
      "2192\tTrain Epoch: 54 [40960/60000 (68%)]\tLoss: 0.019644\n",
      "2192\tTrain Epoch: 54 [46080/60000 (76%)]\tLoss: 0.030082\n",
      "2192\tTrain Epoch: 54 [51200/60000 (85%)]\tLoss: 0.019734\n",
      "2192\tTrain Epoch: 54 [56320/60000 (93%)]\tLoss: 0.044215\n",
      "2192\tTrain Epoch: 55 [0/60000 (0%)]\tLoss: 0.040220\n",
      "2192\tTrain Epoch: 55 [5120/60000 (8%)]\tLoss: 0.035462\n",
      "2192\tTrain Epoch: 55 [10240/60000 (17%)]\tLoss: 0.047773\n",
      "2192\tTrain Epoch: 55 [15360/60000 (25%)]\tLoss: 0.021943\n",
      "2192\tTrain Epoch: 55 [20480/60000 (34%)]\tLoss: 0.049257\n",
      "2192\tTrain Epoch: 55 [25600/60000 (42%)]\tLoss: 0.026318\n",
      "2192\tTrain Epoch: 55 [30720/60000 (51%)]\tLoss: 0.047113\n",
      "2192\tTrain Epoch: 55 [35840/60000 (59%)]\tLoss: 0.029248\n",
      "2192\tTrain Epoch: 55 [40960/60000 (68%)]\tLoss: 0.049799\n",
      "2192\tTrain Epoch: 55 [46080/60000 (76%)]\tLoss: 0.038995\n",
      "2192\tTrain Epoch: 55 [51200/60000 (85%)]\tLoss: 0.049635\n",
      "2192\tTrain Epoch: 55 [56320/60000 (93%)]\tLoss: 0.026235\n",
      "2192\tTrain Epoch: 56 [0/60000 (0%)]\tLoss: 0.026735\n",
      "2192\tTrain Epoch: 56 [5120/60000 (8%)]\tLoss: 0.032370\n",
      "2192\tTrain Epoch: 56 [10240/60000 (17%)]\tLoss: 0.052601\n",
      "2192\tTrain Epoch: 56 [15360/60000 (25%)]\tLoss: 0.026634\n",
      "2192\tTrain Epoch: 56 [20480/60000 (34%)]\tLoss: 0.024708\n",
      "2192\tTrain Epoch: 56 [25600/60000 (42%)]\tLoss: 0.049989\n",
      "2192\tTrain Epoch: 56 [30720/60000 (51%)]\tLoss: 0.036962\n",
      "2192\tTrain Epoch: 56 [35840/60000 (59%)]\tLoss: 0.021961\n",
      "2192\tTrain Epoch: 56 [40960/60000 (68%)]\tLoss: 0.038492\n",
      "2192\tTrain Epoch: 56 [46080/60000 (76%)]\tLoss: 0.028376\n",
      "2192\tTrain Epoch: 56 [51200/60000 (85%)]\tLoss: 0.019011\n",
      "2192\tTrain Epoch: 56 [56320/60000 (93%)]\tLoss: 0.026002\n",
      "2192\tTrain Epoch: 57 [0/60000 (0%)]\tLoss: 0.023810\n",
      "2192\tTrain Epoch: 57 [5120/60000 (8%)]\tLoss: 0.028729\n",
      "2192\tTrain Epoch: 57 [10240/60000 (17%)]\tLoss: 0.028981\n",
      "2192\tTrain Epoch: 57 [15360/60000 (25%)]\tLoss: 0.033214\n",
      "2192\tTrain Epoch: 57 [20480/60000 (34%)]\tLoss: 0.038722\n",
      "2192\tTrain Epoch: 57 [25600/60000 (42%)]\tLoss: 0.032243\n",
      "2192\tTrain Epoch: 57 [30720/60000 (51%)]\tLoss: 0.058923\n",
      "2192\tTrain Epoch: 57 [35840/60000 (59%)]\tLoss: 0.022548\n",
      "2192\tTrain Epoch: 57 [40960/60000 (68%)]\tLoss: 0.044510\n",
      "2192\tTrain Epoch: 57 [46080/60000 (76%)]\tLoss: 0.036554\n",
      "2192\tTrain Epoch: 57 [51200/60000 (85%)]\tLoss: 0.033219\n",
      "2192\tTrain Epoch: 57 [56320/60000 (93%)]\tLoss: 0.025609\n",
      "2192\tTrain Epoch: 58 [0/60000 (0%)]\tLoss: 0.054199\n",
      "2192\tTrain Epoch: 58 [5120/60000 (8%)]\tLoss: 0.032993\n",
      "2192\tTrain Epoch: 58 [10240/60000 (17%)]\tLoss: 0.044393\n",
      "2192\tTrain Epoch: 58 [15360/60000 (25%)]\tLoss: 0.038517\n",
      "2192\tTrain Epoch: 58 [20480/60000 (34%)]\tLoss: 0.032157\n",
      "2192\tTrain Epoch: 58 [25600/60000 (42%)]\tLoss: 0.080927\n",
      "2192\tTrain Epoch: 58 [30720/60000 (51%)]\tLoss: 0.021229\n",
      "2192\tTrain Epoch: 58 [35840/60000 (59%)]\tLoss: 0.030630\n",
      "2192\tTrain Epoch: 58 [40960/60000 (68%)]\tLoss: 0.043665\n",
      "2192\tTrain Epoch: 58 [46080/60000 (76%)]\tLoss: 0.042395\n",
      "2192\tTrain Epoch: 58 [51200/60000 (85%)]\tLoss: 0.022450\n",
      "2192\tTrain Epoch: 58 [56320/60000 (93%)]\tLoss: 0.029832\n",
      "2192\tTrain Epoch: 59 [0/60000 (0%)]\tLoss: 0.017692\n",
      "2192\tTrain Epoch: 59 [5120/60000 (8%)]\tLoss: 0.021136\n",
      "2192\tTrain Epoch: 59 [10240/60000 (17%)]\tLoss: 0.033147\n",
      "2192\tTrain Epoch: 59 [15360/60000 (25%)]\tLoss: 0.034024\n",
      "2192\tTrain Epoch: 59 [20480/60000 (34%)]\tLoss: 0.009873\n",
      "2192\tTrain Epoch: 59 [25600/60000 (42%)]\tLoss: 0.021289\n",
      "2192\tTrain Epoch: 59 [30720/60000 (51%)]\tLoss: 0.022459\n",
      "2192\tTrain Epoch: 59 [35840/60000 (59%)]\tLoss: 0.025754\n",
      "2192\tTrain Epoch: 59 [40960/60000 (68%)]\tLoss: 0.069894\n",
      "2192\tTrain Epoch: 59 [46080/60000 (76%)]\tLoss: 0.015808\n",
      "2192\tTrain Epoch: 59 [51200/60000 (85%)]\tLoss: 0.040352\n",
      "2192\tTrain Epoch: 59 [56320/60000 (93%)]\tLoss: 0.035803\n",
      "2192\tTrain Epoch: 60 [0/60000 (0%)]\tLoss: 0.034363\n",
      "2192\tTrain Epoch: 60 [5120/60000 (8%)]\tLoss: 0.025168\n",
      "2192\tTrain Epoch: 60 [10240/60000 (17%)]\tLoss: 0.027705\n",
      "2192\tTrain Epoch: 60 [15360/60000 (25%)]\tLoss: 0.043286\n",
      "2192\tTrain Epoch: 60 [20480/60000 (34%)]\tLoss: 0.018092\n",
      "2192\tTrain Epoch: 60 [25600/60000 (42%)]\tLoss: 0.018386\n",
      "2192\tTrain Epoch: 60 [30720/60000 (51%)]\tLoss: 0.034404\n",
      "2192\tTrain Epoch: 60 [35840/60000 (59%)]\tLoss: 0.021320\n",
      "2192\tTrain Epoch: 60 [40960/60000 (68%)]\tLoss: 0.036264\n",
      "2192\tTrain Epoch: 60 [46080/60000 (76%)]\tLoss: 0.017384\n",
      "2192\tTrain Epoch: 60 [51200/60000 (85%)]\tLoss: 0.032311\n",
      "2192\tTrain Epoch: 60 [56320/60000 (93%)]\tLoss: 0.045711\n",
      "2192\tTrain Epoch: 61 [0/60000 (0%)]\tLoss: 0.033253\n",
      "2192\tTrain Epoch: 61 [5120/60000 (8%)]\tLoss: 0.044694\n",
      "2192\tTrain Epoch: 61 [10240/60000 (17%)]\tLoss: 0.047643\n",
      "2192\tTrain Epoch: 61 [15360/60000 (25%)]\tLoss: 0.054590\n",
      "2192\tTrain Epoch: 61 [20480/60000 (34%)]\tLoss: 0.036705\n",
      "2192\tTrain Epoch: 61 [25600/60000 (42%)]\tLoss: 0.037632\n",
      "2192\tTrain Epoch: 61 [30720/60000 (51%)]\tLoss: 0.047660\n",
      "2192\tTrain Epoch: 61 [35840/60000 (59%)]\tLoss: 0.055981\n",
      "2192\tTrain Epoch: 61 [40960/60000 (68%)]\tLoss: 0.021255\n",
      "2192\tTrain Epoch: 61 [46080/60000 (76%)]\tLoss: 0.055168\n",
      "2192\tTrain Epoch: 61 [51200/60000 (85%)]\tLoss: 0.025953\n",
      "2192\tTrain Epoch: 61 [56320/60000 (93%)]\tLoss: 0.021728\n",
      "2192\tTrain Epoch: 62 [0/60000 (0%)]\tLoss: 0.014248\n",
      "2192\tTrain Epoch: 62 [5120/60000 (8%)]\tLoss: 0.018159\n",
      "2192\tTrain Epoch: 62 [10240/60000 (17%)]\tLoss: 0.030691\n",
      "2192\tTrain Epoch: 62 [15360/60000 (25%)]\tLoss: 0.042402\n",
      "2192\tTrain Epoch: 62 [20480/60000 (34%)]\tLoss: 0.034979\n",
      "2192\tTrain Epoch: 62 [25600/60000 (42%)]\tLoss: 0.032513\n",
      "2192\tTrain Epoch: 62 [30720/60000 (51%)]\tLoss: 0.023787\n",
      "2192\tTrain Epoch: 62 [35840/60000 (59%)]\tLoss: 0.031487\n",
      "2192\tTrain Epoch: 62 [40960/60000 (68%)]\tLoss: 0.021374\n",
      "2192\tTrain Epoch: 62 [46080/60000 (76%)]\tLoss: 0.021636\n",
      "2192\tTrain Epoch: 62 [51200/60000 (85%)]\tLoss: 0.044750\n",
      "2192\tTrain Epoch: 62 [56320/60000 (93%)]\tLoss: 0.042102\n",
      "2192\tTrain Epoch: 63 [0/60000 (0%)]\tLoss: 0.034017\n",
      "2192\tTrain Epoch: 63 [5120/60000 (8%)]\tLoss: 0.039272\n",
      "2192\tTrain Epoch: 63 [10240/60000 (17%)]\tLoss: 0.042878\n",
      "2192\tTrain Epoch: 63 [15360/60000 (25%)]\tLoss: 0.040732\n",
      "2192\tTrain Epoch: 63 [20480/60000 (34%)]\tLoss: 0.022138\n",
      "2192\tTrain Epoch: 63 [25600/60000 (42%)]\tLoss: 0.037962\n",
      "2192\tTrain Epoch: 63 [30720/60000 (51%)]\tLoss: 0.041075\n",
      "2192\tTrain Epoch: 63 [35840/60000 (59%)]\tLoss: 0.027934\n",
      "2192\tTrain Epoch: 63 [40960/60000 (68%)]\tLoss: 0.039240\n",
      "2192\tTrain Epoch: 63 [46080/60000 (76%)]\tLoss: 0.030457\n",
      "2192\tTrain Epoch: 63 [51200/60000 (85%)]\tLoss: 0.045142\n",
      "2192\tTrain Epoch: 63 [56320/60000 (93%)]\tLoss: 0.021308\n",
      "2192\tTrain Epoch: 64 [0/60000 (0%)]\tLoss: 0.049787\n",
      "2192\tTrain Epoch: 64 [5120/60000 (8%)]\tLoss: 0.027950\n",
      "2192\tTrain Epoch: 64 [10240/60000 (17%)]\tLoss: 0.036502\n",
      "2192\tTrain Epoch: 64 [15360/60000 (25%)]\tLoss: 0.026212\n",
      "2192\tTrain Epoch: 64 [20480/60000 (34%)]\tLoss: 0.034672\n",
      "2192\tTrain Epoch: 64 [25600/60000 (42%)]\tLoss: 0.024951\n",
      "2192\tTrain Epoch: 64 [30720/60000 (51%)]\tLoss: 0.017851\n",
      "2192\tTrain Epoch: 64 [35840/60000 (59%)]\tLoss: 0.028928\n",
      "2192\tTrain Epoch: 64 [40960/60000 (68%)]\tLoss: 0.016814\n",
      "2192\tTrain Epoch: 64 [46080/60000 (76%)]\tLoss: 0.026013\n",
      "2192\tTrain Epoch: 64 [51200/60000 (85%)]\tLoss: 0.033975\n",
      "2192\tTrain Epoch: 64 [56320/60000 (93%)]\tLoss: 0.035831\n",
      "2192\tTrain Epoch: 65 [0/60000 (0%)]\tLoss: 0.019319\n",
      "2192\tTrain Epoch: 65 [5120/60000 (8%)]\tLoss: 0.050616\n",
      "2192\tTrain Epoch: 65 [10240/60000 (17%)]\tLoss: 0.019143\n",
      "2192\tTrain Epoch: 65 [15360/60000 (25%)]\tLoss: 0.040196\n",
      "2192\tTrain Epoch: 65 [20480/60000 (34%)]\tLoss: 0.028880\n",
      "2192\tTrain Epoch: 65 [25600/60000 (42%)]\tLoss: 0.022395\n",
      "2192\tTrain Epoch: 65 [30720/60000 (51%)]\tLoss: 0.030161\n",
      "2192\tTrain Epoch: 65 [35840/60000 (59%)]\tLoss: 0.028166\n",
      "2192\tTrain Epoch: 65 [40960/60000 (68%)]\tLoss: 0.031042\n",
      "2192\tTrain Epoch: 65 [46080/60000 (76%)]\tLoss: 0.017096\n",
      "2192\tTrain Epoch: 65 [51200/60000 (85%)]\tLoss: 0.021940\n",
      "2192\tTrain Epoch: 65 [56320/60000 (93%)]\tLoss: 0.029443\n",
      "2192\tTrain Epoch: 66 [0/60000 (0%)]\tLoss: 0.025239\n",
      "2192\tTrain Epoch: 66 [5120/60000 (8%)]\tLoss: 0.010230\n",
      "2192\tTrain Epoch: 66 [10240/60000 (17%)]\tLoss: 0.039707\n",
      "2192\tTrain Epoch: 66 [15360/60000 (25%)]\tLoss: 0.024371\n",
      "2192\tTrain Epoch: 66 [20480/60000 (34%)]\tLoss: 0.018182\n",
      "2192\tTrain Epoch: 66 [25600/60000 (42%)]\tLoss: 0.030937\n",
      "2192\tTrain Epoch: 66 [30720/60000 (51%)]\tLoss: 0.037888\n",
      "2192\tTrain Epoch: 66 [35840/60000 (59%)]\tLoss: 0.027571\n",
      "2192\tTrain Epoch: 66 [40960/60000 (68%)]\tLoss: 0.034513\n",
      "2192\tTrain Epoch: 66 [46080/60000 (76%)]\tLoss: 0.027467\n",
      "2192\tTrain Epoch: 66 [51200/60000 (85%)]\tLoss: 0.032512\n",
      "2192\tTrain Epoch: 66 [56320/60000 (93%)]\tLoss: 0.025460\n",
      "2192\tTrain Epoch: 67 [0/60000 (0%)]\tLoss: 0.034446\n",
      "2192\tTrain Epoch: 67 [5120/60000 (8%)]\tLoss: 0.027373\n",
      "2192\tTrain Epoch: 67 [10240/60000 (17%)]\tLoss: 0.025774\n",
      "2192\tTrain Epoch: 67 [15360/60000 (25%)]\tLoss: 0.016198\n",
      "2192\tTrain Epoch: 67 [20480/60000 (34%)]\tLoss: 0.036463\n",
      "2192\tTrain Epoch: 67 [25600/60000 (42%)]\tLoss: 0.035752\n",
      "2192\tTrain Epoch: 67 [30720/60000 (51%)]\tLoss: 0.026979\n",
      "2192\tTrain Epoch: 67 [35840/60000 (59%)]\tLoss: 0.046239\n",
      "2192\tTrain Epoch: 67 [40960/60000 (68%)]\tLoss: 0.030672\n",
      "2192\tTrain Epoch: 67 [46080/60000 (76%)]\tLoss: 0.034423\n",
      "2192\tTrain Epoch: 67 [51200/60000 (85%)]\tLoss: 0.047025\n",
      "2192\tTrain Epoch: 67 [56320/60000 (93%)]\tLoss: 0.014938\n",
      "2192\tTrain Epoch: 68 [0/60000 (0%)]\tLoss: 0.046733\n",
      "2192\tTrain Epoch: 68 [5120/60000 (8%)]\tLoss: 0.020457\n",
      "2192\tTrain Epoch: 68 [10240/60000 (17%)]\tLoss: 0.022346\n",
      "2192\tTrain Epoch: 68 [15360/60000 (25%)]\tLoss: 0.046074\n",
      "2192\tTrain Epoch: 68 [20480/60000 (34%)]\tLoss: 0.016706\n",
      "2192\tTrain Epoch: 68 [25600/60000 (42%)]\tLoss: 0.017929\n",
      "2192\tTrain Epoch: 68 [30720/60000 (51%)]\tLoss: 0.012154\n",
      "2192\tTrain Epoch: 68 [35840/60000 (59%)]\tLoss: 0.038122\n",
      "2192\tTrain Epoch: 68 [40960/60000 (68%)]\tLoss: 0.027130\n",
      "2192\tTrain Epoch: 68 [46080/60000 (76%)]\tLoss: 0.030997\n",
      "2192\tTrain Epoch: 68 [51200/60000 (85%)]\tLoss: 0.030385\n",
      "2192\tTrain Epoch: 68 [56320/60000 (93%)]\tLoss: 0.030675\n",
      "2192\tTrain Epoch: 69 [0/60000 (0%)]\tLoss: 0.039611\n",
      "2192\tTrain Epoch: 69 [5120/60000 (8%)]\tLoss: 0.020338\n",
      "2192\tTrain Epoch: 69 [10240/60000 (17%)]\tLoss: 0.025403\n",
      "2192\tTrain Epoch: 69 [15360/60000 (25%)]\tLoss: 0.030206\n",
      "2192\tTrain Epoch: 69 [20480/60000 (34%)]\tLoss: 0.026790\n",
      "2192\tTrain Epoch: 69 [25600/60000 (42%)]\tLoss: 0.034253\n",
      "2192\tTrain Epoch: 69 [30720/60000 (51%)]\tLoss: 0.027205\n",
      "2192\tTrain Epoch: 69 [35840/60000 (59%)]\tLoss: 0.032220\n",
      "2192\tTrain Epoch: 69 [40960/60000 (68%)]\tLoss: 0.017238\n",
      "2192\tTrain Epoch: 69 [46080/60000 (76%)]\tLoss: 0.029661\n",
      "2192\tTrain Epoch: 69 [51200/60000 (85%)]\tLoss: 0.026622\n",
      "2192\tTrain Epoch: 69 [56320/60000 (93%)]\tLoss: 0.034873\n",
      "2192\tTrain Epoch: 70 [0/60000 (0%)]\tLoss: 0.030943\n",
      "2192\tTrain Epoch: 70 [5120/60000 (8%)]\tLoss: 0.023061\n",
      "2192\tTrain Epoch: 70 [10240/60000 (17%)]\tLoss: 0.028673\n",
      "2192\tTrain Epoch: 70 [15360/60000 (25%)]\tLoss: 0.027906\n",
      "2192\tTrain Epoch: 70 [20480/60000 (34%)]\tLoss: 0.028146\n",
      "2192\tTrain Epoch: 70 [25600/60000 (42%)]\tLoss: 0.031513\n",
      "2192\tTrain Epoch: 70 [30720/60000 (51%)]\tLoss: 0.009330\n",
      "2192\tTrain Epoch: 70 [35840/60000 (59%)]\tLoss: 0.018748\n",
      "2192\tTrain Epoch: 70 [40960/60000 (68%)]\tLoss: 0.016875\n",
      "2192\tTrain Epoch: 70 [46080/60000 (76%)]\tLoss: 0.017430\n",
      "2192\tTrain Epoch: 70 [51200/60000 (85%)]\tLoss: 0.013874\n",
      "2192\tTrain Epoch: 70 [56320/60000 (93%)]\tLoss: 0.021348\n",
      "2192\tTrain Epoch: 71 [0/60000 (0%)]\tLoss: 0.028754\n",
      "2192\tTrain Epoch: 71 [5120/60000 (8%)]\tLoss: 0.017826\n",
      "2192\tTrain Epoch: 71 [10240/60000 (17%)]\tLoss: 0.043865\n",
      "2192\tTrain Epoch: 71 [15360/60000 (25%)]\tLoss: 0.026251\n",
      "2192\tTrain Epoch: 71 [20480/60000 (34%)]\tLoss: 0.018916\n",
      "2192\tTrain Epoch: 71 [25600/60000 (42%)]\tLoss: 0.026921\n",
      "2192\tTrain Epoch: 71 [30720/60000 (51%)]\tLoss: 0.034966\n",
      "2192\tTrain Epoch: 71 [35840/60000 (59%)]\tLoss: 0.047430\n",
      "2192\tTrain Epoch: 71 [40960/60000 (68%)]\tLoss: 0.029632\n",
      "2192\tTrain Epoch: 71 [46080/60000 (76%)]\tLoss: 0.028361\n",
      "2192\tTrain Epoch: 71 [51200/60000 (85%)]\tLoss: 0.019138\n",
      "2192\tTrain Epoch: 71 [56320/60000 (93%)]\tLoss: 0.028739\n",
      "2192\tTrain Epoch: 72 [0/60000 (0%)]\tLoss: 0.028240\n",
      "2192\tTrain Epoch: 72 [5120/60000 (8%)]\tLoss: 0.018970\n",
      "2192\tTrain Epoch: 72 [10240/60000 (17%)]\tLoss: 0.028837\n",
      "2192\tTrain Epoch: 72 [15360/60000 (25%)]\tLoss: 0.031373\n",
      "2192\tTrain Epoch: 72 [20480/60000 (34%)]\tLoss: 0.018737\n",
      "2192\tTrain Epoch: 72 [25600/60000 (42%)]\tLoss: 0.031392\n",
      "2192\tTrain Epoch: 72 [30720/60000 (51%)]\tLoss: 0.025310\n",
      "2192\tTrain Epoch: 72 [35840/60000 (59%)]\tLoss: 0.024001\n",
      "2192\tTrain Epoch: 72 [40960/60000 (68%)]\tLoss: 0.021025\n",
      "2192\tTrain Epoch: 72 [46080/60000 (76%)]\tLoss: 0.036787\n",
      "2192\tTrain Epoch: 72 [51200/60000 (85%)]\tLoss: 0.024333\n",
      "2192\tTrain Epoch: 72 [56320/60000 (93%)]\tLoss: 0.019420\n",
      "2192\tTrain Epoch: 73 [0/60000 (0%)]\tLoss: 0.034540\n",
      "2192\tTrain Epoch: 73 [5120/60000 (8%)]\tLoss: 0.022914\n",
      "2192\tTrain Epoch: 73 [10240/60000 (17%)]\tLoss: 0.021915\n",
      "2192\tTrain Epoch: 73 [15360/60000 (25%)]\tLoss: 0.026096\n",
      "2192\tTrain Epoch: 73 [20480/60000 (34%)]\tLoss: 0.025066\n",
      "2192\tTrain Epoch: 73 [25600/60000 (42%)]\tLoss: 0.019189\n",
      "2192\tTrain Epoch: 73 [30720/60000 (51%)]\tLoss: 0.029324\n",
      "2192\tTrain Epoch: 73 [35840/60000 (59%)]\tLoss: 0.029770\n",
      "2192\tTrain Epoch: 73 [40960/60000 (68%)]\tLoss: 0.031779\n",
      "2192\tTrain Epoch: 73 [46080/60000 (76%)]\tLoss: 0.033575\n",
      "2192\tTrain Epoch: 73 [51200/60000 (85%)]\tLoss: 0.031199\n",
      "2192\tTrain Epoch: 73 [56320/60000 (93%)]\tLoss: 0.026435\n",
      "2192\tTrain Epoch: 74 [0/60000 (0%)]\tLoss: 0.029053\n",
      "2192\tTrain Epoch: 74 [5120/60000 (8%)]\tLoss: 0.018361\n",
      "2192\tTrain Epoch: 74 [10240/60000 (17%)]\tLoss: 0.013785\n",
      "2192\tTrain Epoch: 74 [15360/60000 (25%)]\tLoss: 0.031286\n",
      "2192\tTrain Epoch: 74 [20480/60000 (34%)]\tLoss: 0.024765\n",
      "2192\tTrain Epoch: 74 [25600/60000 (42%)]\tLoss: 0.033921\n",
      "2192\tTrain Epoch: 74 [30720/60000 (51%)]\tLoss: 0.016401\n",
      "2192\tTrain Epoch: 74 [35840/60000 (59%)]\tLoss: 0.022714\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2192\tTrain Epoch: 74 [40960/60000 (68%)]\tLoss: 0.017162\n",
      "2192\tTrain Epoch: 74 [46080/60000 (76%)]\tLoss: 0.022123\n",
      "2192\tTrain Epoch: 74 [51200/60000 (85%)]\tLoss: 0.020568\n",
      "2192\tTrain Epoch: 74 [56320/60000 (93%)]\tLoss: 0.019765\n",
      "2192\tTrain Epoch: 75 [0/60000 (0%)]\tLoss: 0.030741\n",
      "2192\tTrain Epoch: 75 [5120/60000 (8%)]\tLoss: 0.012862\n",
      "2192\tTrain Epoch: 75 [10240/60000 (17%)]\tLoss: 0.018218\n",
      "2192\tTrain Epoch: 75 [15360/60000 (25%)]\tLoss: 0.031176\n",
      "2192\tTrain Epoch: 75 [20480/60000 (34%)]\tLoss: 0.021425\n",
      "2192\tTrain Epoch: 75 [25600/60000 (42%)]\tLoss: 0.013227\n",
      "2192\tTrain Epoch: 75 [30720/60000 (51%)]\tLoss: 0.018158\n",
      "2192\tTrain Epoch: 75 [35840/60000 (59%)]\tLoss: 0.028228\n",
      "2192\tTrain Epoch: 75 [40960/60000 (68%)]\tLoss: 0.048077\n",
      "2192\tTrain Epoch: 75 [46080/60000 (76%)]\tLoss: 0.018115\n",
      "2192\tTrain Epoch: 75 [51200/60000 (85%)]\tLoss: 0.023676\n",
      "2192\tTrain Epoch: 75 [56320/60000 (93%)]\tLoss: 0.018869\n",
      "2192\tTrain Epoch: 76 [0/60000 (0%)]\tLoss: 0.025869\n",
      "2192\tTrain Epoch: 76 [5120/60000 (8%)]\tLoss: 0.035810\n",
      "2192\tTrain Epoch: 76 [10240/60000 (17%)]\tLoss: 0.019974\n",
      "2192\tTrain Epoch: 76 [15360/60000 (25%)]\tLoss: 0.028810\n",
      "2192\tTrain Epoch: 76 [20480/60000 (34%)]\tLoss: 0.030302\n",
      "2192\tTrain Epoch: 76 [25600/60000 (42%)]\tLoss: 0.021471\n",
      "2192\tTrain Epoch: 76 [30720/60000 (51%)]\tLoss: 0.026804\n",
      "2192\tTrain Epoch: 76 [35840/60000 (59%)]\tLoss: 0.019657\n",
      "2192\tTrain Epoch: 76 [40960/60000 (68%)]\tLoss: 0.010752\n",
      "2192\tTrain Epoch: 76 [46080/60000 (76%)]\tLoss: 0.024154\n",
      "2192\tTrain Epoch: 76 [51200/60000 (85%)]\tLoss: 0.025570\n",
      "2192\tTrain Epoch: 76 [56320/60000 (93%)]\tLoss: 0.011537\n",
      "2192\tTrain Epoch: 77 [0/60000 (0%)]\tLoss: 0.051043\n",
      "2192\tTrain Epoch: 77 [5120/60000 (8%)]\tLoss: 0.027219\n",
      "2192\tTrain Epoch: 77 [10240/60000 (17%)]\tLoss: 0.033353\n",
      "2192\tTrain Epoch: 77 [15360/60000 (25%)]\tLoss: 0.028127\n",
      "2192\tTrain Epoch: 77 [20480/60000 (34%)]\tLoss: 0.023827\n",
      "2192\tTrain Epoch: 77 [25600/60000 (42%)]\tLoss: 0.024640\n",
      "2192\tTrain Epoch: 77 [30720/60000 (51%)]\tLoss: 0.026603\n",
      "2192\tTrain Epoch: 77 [35840/60000 (59%)]\tLoss: 0.007905\n",
      "2192\tTrain Epoch: 77 [40960/60000 (68%)]\tLoss: 0.015996\n",
      "2192\tTrain Epoch: 77 [46080/60000 (76%)]\tLoss: 0.009556\n",
      "2192\tTrain Epoch: 77 [51200/60000 (85%)]\tLoss: 0.035958\n",
      "2192\tTrain Epoch: 77 [56320/60000 (93%)]\tLoss: 0.015916\n",
      "2192\tTrain Epoch: 78 [0/60000 (0%)]\tLoss: 0.044101\n",
      "2192\tTrain Epoch: 78 [5120/60000 (8%)]\tLoss: 0.034232\n",
      "2192\tTrain Epoch: 78 [10240/60000 (17%)]\tLoss: 0.023869\n",
      "2192\tTrain Epoch: 78 [15360/60000 (25%)]\tLoss: 0.014694\n",
      "2192\tTrain Epoch: 78 [20480/60000 (34%)]\tLoss: 0.024812\n",
      "2192\tTrain Epoch: 78 [25600/60000 (42%)]\tLoss: 0.025175\n",
      "2192\tTrain Epoch: 78 [30720/60000 (51%)]\tLoss: 0.009779\n",
      "2192\tTrain Epoch: 78 [35840/60000 (59%)]\tLoss: 0.017737\n",
      "2192\tTrain Epoch: 78 [40960/60000 (68%)]\tLoss: 0.022715\n",
      "2192\tTrain Epoch: 78 [46080/60000 (76%)]\tLoss: 0.050211\n",
      "2192\tTrain Epoch: 78 [51200/60000 (85%)]\tLoss: 0.014406\n",
      "2192\tTrain Epoch: 78 [56320/60000 (93%)]\tLoss: 0.029785\n",
      "2192\tTrain Epoch: 79 [0/60000 (0%)]\tLoss: 0.034918\n",
      "2192\tTrain Epoch: 79 [5120/60000 (8%)]\tLoss: 0.009264\n",
      "2192\tTrain Epoch: 79 [10240/60000 (17%)]\tLoss: 0.015786\n",
      "2192\tTrain Epoch: 79 [15360/60000 (25%)]\tLoss: 0.022862\n",
      "2192\tTrain Epoch: 79 [20480/60000 (34%)]\tLoss: 0.012500\n",
      "2192\tTrain Epoch: 79 [25600/60000 (42%)]\tLoss: 0.016256\n",
      "2192\tTrain Epoch: 79 [30720/60000 (51%)]\tLoss: 0.026193\n",
      "2192\tTrain Epoch: 79 [35840/60000 (59%)]\tLoss: 0.025243\n",
      "2192\tTrain Epoch: 79 [40960/60000 (68%)]\tLoss: 0.021596\n",
      "2192\tTrain Epoch: 79 [46080/60000 (76%)]\tLoss: 0.024463\n",
      "2192\tTrain Epoch: 79 [51200/60000 (85%)]\tLoss: 0.036721\n",
      "2192\tTrain Epoch: 79 [56320/60000 (93%)]\tLoss: 0.042926\n",
      "2192\tTrain Epoch: 80 [0/60000 (0%)]\tLoss: 0.023002\n",
      "2192\tTrain Epoch: 80 [5120/60000 (8%)]\tLoss: 0.013552\n",
      "2192\tTrain Epoch: 80 [10240/60000 (17%)]\tLoss: 0.018328\n",
      "2192\tTrain Epoch: 80 [15360/60000 (25%)]\tLoss: 0.015437\n",
      "2192\tTrain Epoch: 80 [20480/60000 (34%)]\tLoss: 0.035803\n",
      "2192\tTrain Epoch: 80 [25600/60000 (42%)]\tLoss: 0.017357\n",
      "2192\tTrain Epoch: 80 [30720/60000 (51%)]\tLoss: 0.049982\n",
      "2192\tTrain Epoch: 80 [35840/60000 (59%)]\tLoss: 0.012559\n",
      "2192\tTrain Epoch: 80 [40960/60000 (68%)]\tLoss: 0.028407\n",
      "2192\tTrain Epoch: 80 [46080/60000 (76%)]\tLoss: 0.018452\n",
      "2192\tTrain Epoch: 80 [51200/60000 (85%)]\tLoss: 0.024749\n",
      "2192\tTrain Epoch: 80 [56320/60000 (93%)]\tLoss: 0.012483\n",
      "2192\tTrain Epoch: 81 [0/60000 (0%)]\tLoss: 0.009355\n",
      "2192\tTrain Epoch: 81 [5120/60000 (8%)]\tLoss: 0.025092\n",
      "2192\tTrain Epoch: 81 [10240/60000 (17%)]\tLoss: 0.016751\n",
      "2192\tTrain Epoch: 81 [15360/60000 (25%)]\tLoss: 0.022378\n",
      "2192\tTrain Epoch: 81 [20480/60000 (34%)]\tLoss: 0.025929\n",
      "2192\tTrain Epoch: 81 [25600/60000 (42%)]\tLoss: 0.022478\n",
      "2192\tTrain Epoch: 81 [30720/60000 (51%)]\tLoss: 0.019690\n",
      "2192\tTrain Epoch: 81 [35840/60000 (59%)]\tLoss: 0.024629\n",
      "2192\tTrain Epoch: 81 [40960/60000 (68%)]\tLoss: 0.025596\n",
      "2192\tTrain Epoch: 81 [46080/60000 (76%)]\tLoss: 0.012887\n",
      "2192\tTrain Epoch: 81 [51200/60000 (85%)]\tLoss: 0.027392\n",
      "2192\tTrain Epoch: 81 [56320/60000 (93%)]\tLoss: 0.011333\n",
      "2192\tTrain Epoch: 82 [0/60000 (0%)]\tLoss: 0.021368\n",
      "2192\tTrain Epoch: 82 [5120/60000 (8%)]\tLoss: 0.014000\n",
      "2192\tTrain Epoch: 82 [10240/60000 (17%)]\tLoss: 0.019783\n",
      "2192\tTrain Epoch: 82 [15360/60000 (25%)]\tLoss: 0.013814\n",
      "2192\tTrain Epoch: 82 [20480/60000 (34%)]\tLoss: 0.021228\n",
      "2192\tTrain Epoch: 82 [25600/60000 (42%)]\tLoss: 0.020788\n",
      "2192\tTrain Epoch: 82 [30720/60000 (51%)]\tLoss: 0.017855\n",
      "2192\tTrain Epoch: 82 [35840/60000 (59%)]\tLoss: 0.035514\n",
      "2192\tTrain Epoch: 82 [40960/60000 (68%)]\tLoss: 0.028371\n",
      "2192\tTrain Epoch: 82 [46080/60000 (76%)]\tLoss: 0.016430\n",
      "2192\tTrain Epoch: 82 [51200/60000 (85%)]\tLoss: 0.011391\n",
      "2192\tTrain Epoch: 82 [56320/60000 (93%)]\tLoss: 0.028337\n",
      "2192\tTrain Epoch: 83 [0/60000 (0%)]\tLoss: 0.016505\n",
      "2192\tTrain Epoch: 83 [5120/60000 (8%)]\tLoss: 0.026767\n",
      "2192\tTrain Epoch: 83 [10240/60000 (17%)]\tLoss: 0.034062\n",
      "2192\tTrain Epoch: 83 [15360/60000 (25%)]\tLoss: 0.015021\n",
      "2192\tTrain Epoch: 83 [20480/60000 (34%)]\tLoss: 0.025539\n",
      "2192\tTrain Epoch: 83 [25600/60000 (42%)]\tLoss: 0.008265\n",
      "2192\tTrain Epoch: 83 [30720/60000 (51%)]\tLoss: 0.024609\n",
      "2192\tTrain Epoch: 83 [35840/60000 (59%)]\tLoss: 0.025982\n",
      "2192\tTrain Epoch: 83 [40960/60000 (68%)]\tLoss: 0.013737\n",
      "2192\tTrain Epoch: 83 [46080/60000 (76%)]\tLoss: 0.034919\n",
      "2192\tTrain Epoch: 83 [51200/60000 (85%)]\tLoss: 0.008514\n",
      "2192\tTrain Epoch: 83 [56320/60000 (93%)]\tLoss: 0.028232\n",
      "2192\tTrain Epoch: 84 [0/60000 (0%)]\tLoss: 0.016034\n",
      "2192\tTrain Epoch: 84 [5120/60000 (8%)]\tLoss: 0.015250\n",
      "2192\tTrain Epoch: 84 [10240/60000 (17%)]\tLoss: 0.028113\n",
      "2192\tTrain Epoch: 84 [15360/60000 (25%)]\tLoss: 0.019519\n",
      "2192\tTrain Epoch: 84 [20480/60000 (34%)]\tLoss: 0.032110\n",
      "2192\tTrain Epoch: 84 [25600/60000 (42%)]\tLoss: 0.047668\n",
      "2192\tTrain Epoch: 84 [30720/60000 (51%)]\tLoss: 0.012372\n",
      "2192\tTrain Epoch: 84 [35840/60000 (59%)]\tLoss: 0.014834\n",
      "2192\tTrain Epoch: 84 [40960/60000 (68%)]\tLoss: 0.012149\n",
      "2192\tTrain Epoch: 84 [46080/60000 (76%)]\tLoss: 0.021746\n",
      "2192\tTrain Epoch: 84 [51200/60000 (85%)]\tLoss: 0.015491\n",
      "2192\tTrain Epoch: 84 [56320/60000 (93%)]\tLoss: 0.034535\n",
      "2192\tTrain Epoch: 85 [0/60000 (0%)]\tLoss: 0.017270\n",
      "2192\tTrain Epoch: 85 [5120/60000 (8%)]\tLoss: 0.022194\n",
      "2192\tTrain Epoch: 85 [10240/60000 (17%)]\tLoss: 0.018666\n",
      "2192\tTrain Epoch: 85 [15360/60000 (25%)]\tLoss: 0.038397\n",
      "2192\tTrain Epoch: 85 [20480/60000 (34%)]\tLoss: 0.018911\n",
      "2192\tTrain Epoch: 85 [25600/60000 (42%)]\tLoss: 0.024724\n",
      "2192\tTrain Epoch: 85 [30720/60000 (51%)]\tLoss: 0.016293\n",
      "2192\tTrain Epoch: 85 [35840/60000 (59%)]\tLoss: 0.019747\n",
      "2192\tTrain Epoch: 85 [40960/60000 (68%)]\tLoss: 0.028331\n",
      "2192\tTrain Epoch: 85 [46080/60000 (76%)]\tLoss: 0.035672\n",
      "2192\tTrain Epoch: 85 [51200/60000 (85%)]\tLoss: 0.021987\n",
      "2192\tTrain Epoch: 85 [56320/60000 (93%)]\tLoss: 0.016619\n",
      "2192\tTrain Epoch: 86 [0/60000 (0%)]\tLoss: 0.024353\n",
      "2192\tTrain Epoch: 86 [5120/60000 (8%)]\tLoss: 0.022115\n",
      "2192\tTrain Epoch: 86 [10240/60000 (17%)]\tLoss: 0.015008\n",
      "2192\tTrain Epoch: 86 [15360/60000 (25%)]\tLoss: 0.041731\n",
      "2192\tTrain Epoch: 86 [20480/60000 (34%)]\tLoss: 0.012245\n",
      "2192\tTrain Epoch: 86 [25600/60000 (42%)]\tLoss: 0.033609\n",
      "2192\tTrain Epoch: 86 [30720/60000 (51%)]\tLoss: 0.030186\n",
      "2192\tTrain Epoch: 86 [35840/60000 (59%)]\tLoss: 0.015253\n",
      "2192\tTrain Epoch: 86 [40960/60000 (68%)]\tLoss: 0.029924\n",
      "2192\tTrain Epoch: 86 [46080/60000 (76%)]\tLoss: 0.016116\n",
      "2192\tTrain Epoch: 86 [51200/60000 (85%)]\tLoss: 0.021663\n",
      "2192\tTrain Epoch: 86 [56320/60000 (93%)]\tLoss: 0.035568\n",
      "2192\tTrain Epoch: 87 [0/60000 (0%)]\tLoss: 0.017196\n",
      "2192\tTrain Epoch: 87 [5120/60000 (8%)]\tLoss: 0.022734\n",
      "2192\tTrain Epoch: 87 [10240/60000 (17%)]\tLoss: 0.017928\n",
      "2192\tTrain Epoch: 87 [15360/60000 (25%)]\tLoss: 0.017308\n",
      "2192\tTrain Epoch: 87 [20480/60000 (34%)]\tLoss: 0.024517\n",
      "2192\tTrain Epoch: 87 [25600/60000 (42%)]\tLoss: 0.013450\n",
      "2192\tTrain Epoch: 87 [30720/60000 (51%)]\tLoss: 0.021241\n",
      "2192\tTrain Epoch: 87 [35840/60000 (59%)]\tLoss: 0.009836\n",
      "2192\tTrain Epoch: 87 [40960/60000 (68%)]\tLoss: 0.036951\n",
      "2192\tTrain Epoch: 87 [46080/60000 (76%)]\tLoss: 0.029769\n",
      "2192\tTrain Epoch: 87 [51200/60000 (85%)]\tLoss: 0.041845\n",
      "2192\tTrain Epoch: 87 [56320/60000 (93%)]\tLoss: 0.037821\n",
      "2192\tTrain Epoch: 88 [0/60000 (0%)]\tLoss: 0.020659\n",
      "2192\tTrain Epoch: 88 [5120/60000 (8%)]\tLoss: 0.016258\n",
      "2192\tTrain Epoch: 88 [10240/60000 (17%)]\tLoss: 0.026011\n",
      "2192\tTrain Epoch: 88 [15360/60000 (25%)]\tLoss: 0.014113\n",
      "2192\tTrain Epoch: 88 [20480/60000 (34%)]\tLoss: 0.015934\n",
      "2192\tTrain Epoch: 88 [25600/60000 (42%)]\tLoss: 0.024099\n",
      "2192\tTrain Epoch: 88 [30720/60000 (51%)]\tLoss: 0.011121\n",
      "2192\tTrain Epoch: 88 [35840/60000 (59%)]\tLoss: 0.012060\n",
      "2192\tTrain Epoch: 88 [40960/60000 (68%)]\tLoss: 0.022109\n",
      "2192\tTrain Epoch: 88 [46080/60000 (76%)]\tLoss: 0.012543\n",
      "2192\tTrain Epoch: 88 [51200/60000 (85%)]\tLoss: 0.026574\n",
      "2192\tTrain Epoch: 88 [56320/60000 (93%)]\tLoss: 0.024886\n",
      "2192\tTrain Epoch: 89 [0/60000 (0%)]\tLoss: 0.021175\n",
      "2192\tTrain Epoch: 89 [5120/60000 (8%)]\tLoss: 0.014710\n",
      "2192\tTrain Epoch: 89 [10240/60000 (17%)]\tLoss: 0.011895\n",
      "2192\tTrain Epoch: 89 [15360/60000 (25%)]\tLoss: 0.017107\n",
      "2192\tTrain Epoch: 89 [20480/60000 (34%)]\tLoss: 0.010317\n",
      "2192\tTrain Epoch: 89 [25600/60000 (42%)]\tLoss: 0.010054\n",
      "2192\tTrain Epoch: 89 [30720/60000 (51%)]\tLoss: 0.027089\n",
      "2192\tTrain Epoch: 89 [35840/60000 (59%)]\tLoss: 0.028016\n",
      "2192\tTrain Epoch: 89 [40960/60000 (68%)]\tLoss: 0.008446\n",
      "2192\tTrain Epoch: 89 [46080/60000 (76%)]\tLoss: 0.022778\n",
      "2192\tTrain Epoch: 89 [51200/60000 (85%)]\tLoss: 0.049106\n",
      "2192\tTrain Epoch: 89 [56320/60000 (93%)]\tLoss: 0.013978\n",
      "2192\tTrain Epoch: 90 [0/60000 (0%)]\tLoss: 0.022072\n",
      "2192\tTrain Epoch: 90 [5120/60000 (8%)]\tLoss: 0.014899\n",
      "2192\tTrain Epoch: 90 [10240/60000 (17%)]\tLoss: 0.015703\n",
      "2192\tTrain Epoch: 90 [15360/60000 (25%)]\tLoss: 0.039571\n",
      "2192\tTrain Epoch: 90 [20480/60000 (34%)]\tLoss: 0.011328\n",
      "2192\tTrain Epoch: 90 [25600/60000 (42%)]\tLoss: 0.009443\n",
      "2192\tTrain Epoch: 90 [30720/60000 (51%)]\tLoss: 0.011648\n",
      "2192\tTrain Epoch: 90 [35840/60000 (59%)]\tLoss: 0.025151\n",
      "2192\tTrain Epoch: 90 [40960/60000 (68%)]\tLoss: 0.012413\n",
      "2192\tTrain Epoch: 90 [46080/60000 (76%)]\tLoss: 0.005450\n",
      "2192\tTrain Epoch: 90 [51200/60000 (85%)]\tLoss: 0.011738\n",
      "2192\tTrain Epoch: 90 [56320/60000 (93%)]\tLoss: 0.027784\n",
      "2192\tTrain Epoch: 91 [0/60000 (0%)]\tLoss: 0.015414\n",
      "2192\tTrain Epoch: 91 [5120/60000 (8%)]\tLoss: 0.011676\n",
      "2192\tTrain Epoch: 91 [10240/60000 (17%)]\tLoss: 0.022025\n",
      "2192\tTrain Epoch: 91 [15360/60000 (25%)]\tLoss: 0.030406\n",
      "2192\tTrain Epoch: 91 [20480/60000 (34%)]\tLoss: 0.020437\n",
      "2192\tTrain Epoch: 91 [25600/60000 (42%)]\tLoss: 0.020976\n",
      "2192\tTrain Epoch: 91 [30720/60000 (51%)]\tLoss: 0.030547\n",
      "2192\tTrain Epoch: 91 [35840/60000 (59%)]\tLoss: 0.020579\n",
      "2192\tTrain Epoch: 91 [40960/60000 (68%)]\tLoss: 0.009179\n",
      "2192\tTrain Epoch: 91 [46080/60000 (76%)]\tLoss: 0.032318\n",
      "2192\tTrain Epoch: 91 [51200/60000 (85%)]\tLoss: 0.016868\n",
      "2192\tTrain Epoch: 91 [56320/60000 (93%)]\tLoss: 0.008620\n",
      "2192\tTrain Epoch: 92 [0/60000 (0%)]\tLoss: 0.025507\n",
      "2192\tTrain Epoch: 92 [5120/60000 (8%)]\tLoss: 0.019640\n",
      "2192\tTrain Epoch: 92 [10240/60000 (17%)]\tLoss: 0.021395\n",
      "2192\tTrain Epoch: 92 [15360/60000 (25%)]\tLoss: 0.017726\n",
      "2192\tTrain Epoch: 92 [20480/60000 (34%)]\tLoss: 0.020364\n",
      "2192\tTrain Epoch: 92 [25600/60000 (42%)]\tLoss: 0.024049\n",
      "2192\tTrain Epoch: 92 [30720/60000 (51%)]\tLoss: 0.022124\n",
      "2192\tTrain Epoch: 92 [35840/60000 (59%)]\tLoss: 0.018291\n",
      "2192\tTrain Epoch: 92 [40960/60000 (68%)]\tLoss: 0.010478\n",
      "2192\tTrain Epoch: 92 [46080/60000 (76%)]\tLoss: 0.009672\n",
      "2192\tTrain Epoch: 92 [51200/60000 (85%)]\tLoss: 0.012449\n",
      "2192\tTrain Epoch: 92 [56320/60000 (93%)]\tLoss: 0.021094\n",
      "2192\tTrain Epoch: 93 [0/60000 (0%)]\tLoss: 0.037369\n",
      "2192\tTrain Epoch: 93 [5120/60000 (8%)]\tLoss: 0.034208\n",
      "2192\tTrain Epoch: 93 [10240/60000 (17%)]\tLoss: 0.024644\n",
      "2192\tTrain Epoch: 93 [15360/60000 (25%)]\tLoss: 0.012139\n",
      "2192\tTrain Epoch: 93 [20480/60000 (34%)]\tLoss: 0.012818\n",
      "2192\tTrain Epoch: 93 [25600/60000 (42%)]\tLoss: 0.020668\n",
      "2192\tTrain Epoch: 93 [30720/60000 (51%)]\tLoss: 0.016729\n",
      "2192\tTrain Epoch: 93 [35840/60000 (59%)]\tLoss: 0.010375\n",
      "2192\tTrain Epoch: 93 [40960/60000 (68%)]\tLoss: 0.010202\n",
      "2192\tTrain Epoch: 93 [46080/60000 (76%)]\tLoss: 0.019425\n",
      "2192\tTrain Epoch: 93 [51200/60000 (85%)]\tLoss: 0.022849\n",
      "2192\tTrain Epoch: 93 [56320/60000 (93%)]\tLoss: 0.015982\n",
      "2192\tTrain Epoch: 94 [0/60000 (0%)]\tLoss: 0.017074\n",
      "2192\tTrain Epoch: 94 [5120/60000 (8%)]\tLoss: 0.010162\n",
      "2192\tTrain Epoch: 94 [10240/60000 (17%)]\tLoss: 0.016723\n",
      "2192\tTrain Epoch: 94 [15360/60000 (25%)]\tLoss: 0.028935\n",
      "2192\tTrain Epoch: 94 [20480/60000 (34%)]\tLoss: 0.025337\n",
      "2192\tTrain Epoch: 94 [25600/60000 (42%)]\tLoss: 0.027732\n",
      "2192\tTrain Epoch: 94 [30720/60000 (51%)]\tLoss: 0.010616\n",
      "2192\tTrain Epoch: 94 [35840/60000 (59%)]\tLoss: 0.022866\n",
      "2192\tTrain Epoch: 94 [40960/60000 (68%)]\tLoss: 0.020472\n",
      "2192\tTrain Epoch: 94 [46080/60000 (76%)]\tLoss: 0.014436\n",
      "2192\tTrain Epoch: 94 [51200/60000 (85%)]\tLoss: 0.020527\n",
      "2192\tTrain Epoch: 94 [56320/60000 (93%)]\tLoss: 0.023126\n",
      "2192\tTrain Epoch: 95 [0/60000 (0%)]\tLoss: 0.012277\n",
      "2192\tTrain Epoch: 95 [5120/60000 (8%)]\tLoss: 0.013497\n",
      "2192\tTrain Epoch: 95 [10240/60000 (17%)]\tLoss: 0.011978\n",
      "2192\tTrain Epoch: 95 [15360/60000 (25%)]\tLoss: 0.036516\n",
      "2192\tTrain Epoch: 95 [20480/60000 (34%)]\tLoss: 0.013262\n",
      "2192\tTrain Epoch: 95 [25600/60000 (42%)]\tLoss: 0.017886\n",
      "2192\tTrain Epoch: 95 [30720/60000 (51%)]\tLoss: 0.024229\n",
      "2192\tTrain Epoch: 95 [35840/60000 (59%)]\tLoss: 0.020313\n",
      "2192\tTrain Epoch: 95 [40960/60000 (68%)]\tLoss: 0.013373\n",
      "2192\tTrain Epoch: 95 [46080/60000 (76%)]\tLoss: 0.010441\n",
      "2192\tTrain Epoch: 95 [51200/60000 (85%)]\tLoss: 0.011888\n",
      "2192\tTrain Epoch: 95 [56320/60000 (93%)]\tLoss: 0.017649\n",
      "2192\tTrain Epoch: 96 [0/60000 (0%)]\tLoss: 0.019761\n",
      "2192\tTrain Epoch: 96 [5120/60000 (8%)]\tLoss: 0.015257\n",
      "2192\tTrain Epoch: 96 [10240/60000 (17%)]\tLoss: 0.017073\n",
      "2192\tTrain Epoch: 96 [15360/60000 (25%)]\tLoss: 0.020533\n",
      "2192\tTrain Epoch: 96 [20480/60000 (34%)]\tLoss: 0.016198\n",
      "2192\tTrain Epoch: 96 [25600/60000 (42%)]\tLoss: 0.007305\n",
      "2192\tTrain Epoch: 96 [30720/60000 (51%)]\tLoss: 0.010680\n",
      "2192\tTrain Epoch: 96 [35840/60000 (59%)]\tLoss: 0.012460\n",
      "2192\tTrain Epoch: 96 [40960/60000 (68%)]\tLoss: 0.010525\n",
      "2192\tTrain Epoch: 96 [46080/60000 (76%)]\tLoss: 0.013949\n",
      "2192\tTrain Epoch: 96 [51200/60000 (85%)]\tLoss: 0.012704\n",
      "2192\tTrain Epoch: 96 [56320/60000 (93%)]\tLoss: 0.019499\n",
      "2192\tTrain Epoch: 97 [0/60000 (0%)]\tLoss: 0.018683\n",
      "2192\tTrain Epoch: 97 [5120/60000 (8%)]\tLoss: 0.007877\n",
      "2192\tTrain Epoch: 97 [10240/60000 (17%)]\tLoss: 0.011241\n",
      "2192\tTrain Epoch: 97 [15360/60000 (25%)]\tLoss: 0.011798\n",
      "2192\tTrain Epoch: 97 [20480/60000 (34%)]\tLoss: 0.029677\n",
      "2192\tTrain Epoch: 97 [25600/60000 (42%)]\tLoss: 0.013260\n",
      "2192\tTrain Epoch: 97 [30720/60000 (51%)]\tLoss: 0.014149\n",
      "2192\tTrain Epoch: 97 [35840/60000 (59%)]\tLoss: 0.023232\n",
      "2192\tTrain Epoch: 97 [40960/60000 (68%)]\tLoss: 0.027588\n",
      "2192\tTrain Epoch: 97 [46080/60000 (76%)]\tLoss: 0.024098\n",
      "2192\tTrain Epoch: 97 [51200/60000 (85%)]\tLoss: 0.016625\n",
      "2192\tTrain Epoch: 97 [56320/60000 (93%)]\tLoss: 0.013488\n",
      "2192\tTrain Epoch: 98 [0/60000 (0%)]\tLoss: 0.022842\n",
      "2192\tTrain Epoch: 98 [5120/60000 (8%)]\tLoss: 0.032490\n",
      "2192\tTrain Epoch: 98 [10240/60000 (17%)]\tLoss: 0.011700\n",
      "2192\tTrain Epoch: 98 [15360/60000 (25%)]\tLoss: 0.011451\n",
      "2192\tTrain Epoch: 98 [20480/60000 (34%)]\tLoss: 0.018272\n",
      "2192\tTrain Epoch: 98 [25600/60000 (42%)]\tLoss: 0.020183\n",
      "2192\tTrain Epoch: 98 [30720/60000 (51%)]\tLoss: 0.013721\n",
      "2192\tTrain Epoch: 98 [35840/60000 (59%)]\tLoss: 0.019091\n",
      "2192\tTrain Epoch: 98 [40960/60000 (68%)]\tLoss: 0.018960\n",
      "2192\tTrain Epoch: 98 [46080/60000 (76%)]\tLoss: 0.014129\n",
      "2192\tTrain Epoch: 98 [51200/60000 (85%)]\tLoss: 0.010900\n",
      "2192\tTrain Epoch: 98 [56320/60000 (93%)]\tLoss: 0.019918\n",
      "2192\tTrain Epoch: 99 [0/60000 (0%)]\tLoss: 0.011540\n",
      "2192\tTrain Epoch: 99 [5120/60000 (8%)]\tLoss: 0.013980\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2192\tTrain Epoch: 99 [10240/60000 (17%)]\tLoss: 0.013563\n",
      "2192\tTrain Epoch: 99 [15360/60000 (25%)]\tLoss: 0.005070\n",
      "2192\tTrain Epoch: 99 [20480/60000 (34%)]\tLoss: 0.020456\n",
      "2192\tTrain Epoch: 99 [25600/60000 (42%)]\tLoss: 0.008158\n",
      "2192\tTrain Epoch: 99 [30720/60000 (51%)]\tLoss: 0.012548\n",
      "2192\tTrain Epoch: 99 [35840/60000 (59%)]\tLoss: 0.019775\n",
      "2192\tTrain Epoch: 99 [40960/60000 (68%)]\tLoss: 0.010992\n",
      "2192\tTrain Epoch: 99 [46080/60000 (76%)]\tLoss: 0.016445\n",
      "2192\tTrain Epoch: 99 [51200/60000 (85%)]\tLoss: 0.017096\n",
      "2192\tTrain Epoch: 99 [56320/60000 (93%)]\tLoss: 0.017508\n",
      "2192\tTrain Epoch: 100 [0/60000 (0%)]\tLoss: 0.060903\n",
      "2192\tTrain Epoch: 100 [5120/60000 (8%)]\tLoss: 0.015776\n",
      "2192\tTrain Epoch: 100 [10240/60000 (17%)]\tLoss: 0.008416\n",
      "2192\tTrain Epoch: 100 [15360/60000 (25%)]\tLoss: 0.015621\n",
      "2192\tTrain Epoch: 100 [20480/60000 (34%)]\tLoss: 0.014284\n",
      "2192\tTrain Epoch: 100 [25600/60000 (42%)]\tLoss: 0.028844\n",
      "2192\tTrain Epoch: 100 [30720/60000 (51%)]\tLoss: 0.016716\n",
      "2192\tTrain Epoch: 100 [35840/60000 (59%)]\tLoss: 0.011113\n",
      "2192\tTrain Epoch: 100 [40960/60000 (68%)]\tLoss: 0.023914\n",
      "2192\tTrain Epoch: 100 [46080/60000 (76%)]\tLoss: 0.009590\n",
      "2192\tTrain Epoch: 100 [51200/60000 (85%)]\tLoss: 0.011125\n",
      "2192\tTrain Epoch: 100 [56320/60000 (93%)]\tLoss: 0.021282\n",
      "\n",
      "Test set: Average loss: 0.0361, Accuracy: 9882/10000 (99%)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "viz = visdom.Visdom(port=8097, server=\"127.0.0.1\",env=\"Test\")\n",
    "# line updates\n",
    "loss_win = viz.line(np.arange(1))\n",
    "\n",
    "args={\n",
    "    'batch_size':512,\n",
    "    'epochs':100,\n",
    "    'lr':0.01,\n",
    "    'momentum':0.5,\n",
    "    'seed':1,\n",
    "    'log_interval':30,\n",
    "    'cuda':True,\n",
    "    'loss_win':loss_win\n",
    "}\n",
    "\n",
    "if __name__==\"__main__\":\n",
    "    #判断是否使用GPU\n",
    "    use_cuda = args.get('cuda') and torch.cuda.is_available()\n",
    "    #运行时设备\n",
    "    device = torch.device(\"cuda\" if use_cuda else \"cpu\")\n",
    "    #使用固定缓冲区\n",
    "    dataloader_kwargs = {'pin_memory': True} if use_cuda else {}\n",
    "    model = LeNet().cuda() if use_cuda else LeNet()\n",
    "    train(args,model,device,dataloader_kwargs)\n",
    "    test(args, model, device, dataloader_kwargs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Image\n",
    "Image(\"LeNet.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LeNet(\n",
       "  (conv1): Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1))\n",
       "  (pool1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  (conv2): Conv2d(20, 50, kernel_size=(5, 5), stride=(1, 1))\n",
       "  (pool2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  (fc1): Linear(in_features=800, out_features=500, bias=True)\n",
       "  (relu1): ReLU()\n",
       "  (fc2): Linear(in_features=500, out_features=10, bias=True)\n",
       "  (relu2): ReLU()\n",
       ")"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = LeNet()\n",
    "model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
